朕在给 ThinkSNS 写 API 时遇到了史前大难题!

2015-06-18 18:30:05 +08:00
 incrediblink

不知道在V2EX问这种事情会不会太low了

是这样的,朕最近为了给自己的ThinkSNS小站写一个桌面客户端。是用ThinkPHP(妈呀不行气质更low了!QAQ)框架弄的,登录验证、获取微博信息这些都实现了,正在朕心中翻涌起滚滚巨浪心想着能一统江山的时候,出现了谜之难题。

朕的发布文字微博的函数是这样写的

function textTweet($uid, $content){
$Feed = M('feed');
$Feed->uid = $uid;
$Feed->publish_time = time();
$Feed->type = 'post';
$feed_id = $Feed->add();
$FeedData = M('feed_data');
$FeedData->feed_id = $feed_id;
$FeedData->feed_data = "a:16:{s:7:\"content\";s:24:\"".$content."\";s:4:\"body\";s:24:\"".$content."\";s:10:\"source_url\";s:0:\"\";s:9:\"attach_id\";s:0:\"\";s:3:\"uid\";i:283;s:3:\"app\";s:6:\"public\";s:4:\"type\";s:4:\"post\";s:10:\"app_row_id\";i:0;s:13:\"app_row_table\";s:4:\"feed\";s:12:\"publish_time\";i:".time().";s:4:\"from\";s:1:\"0\";s:12:\"repost_count\";i:0;s:13:\"comment_count\";i:0;s:6:\"is_del\";i:0;s:9:\"is_repost\";i:0;s:8:\"is_audit\";i:1;}";
$FeedData->client_ip = get_client_ip();
$FeedData->feed_content = $content;
$FeedData->add();
return $feed_id;
}

求别吐槽文风…然后那个谜一样的feed_data大概就是万恶之源

POST以后确确实实输出了Feed_id(是的你没看错那个key就是密钥)

然而在Timeline里面显示出来是空空的

数据库里面的feeddata明明活蹦乱跳的啊!QAQ

嗯,问了一只触触,他说TS是读缓存的,然而朕清了服务器缓存后还是一片空白。所以朕就找到大家了…希望大家不要嫌弃朕……

3324 次点击
所在节点    问与答
23 条回复
incrediblink
2015-06-19 08:56:10 +08:00
@oott123 (つД`)我在你心中就这么呆吗!
现在我把代码改成这样了w
```
$unserialized_feed_data[content] = $content;
$unserialized_feed_data[body] = $content;
$unserialized_feed_data[source_url] = "";
$unserialized_feed_data[attach_id] = 0;
$unserialized_feed_data[uid] = $uid;
$unserialized_feed_data[app] = "public";
$unserialized_feed_data[type] = "post";
$unserialized_feed_data[app_row_id] = 0;
$unserialized_feed_data[app_row_table] = "feed";
$unserialized_feed_data[publish_time] = $time;
$unserialized_feed_data[from] = 0;
$unserialized_feed_data[repost_count] = 0;
$unserialized_feed_data[comment_count] = 0;
$unserialized_feed_data[is_del] = 0;
$unserialized_feed_data[is_repost] = 0;
$unserialized_feed_data[is_audit] = 1;
$FeedData->feed_data = serialize($unserialized_feed_data);
```
oott123
2015-06-19 19:46:08 +08:00
@incrediblink 哈哈哈哈哈哈还是好呆……
首先你这个代码,数组下标里应该用字符串,如 $data["from"] 而不是 $data[from], 不然会报一个 Warning 级别的错误,这属于未定义常量。
其次,你可以写成 $data = array(
'a'=> 'b',
'c'=> 'd'
);
的形式,不用写那么复杂……
另外我觉得你应该好好系统的学一下 PHP 了……
incrediblink
2015-06-19 20:36:00 +08:00
@oott123 臣妾遵旨(´-ι_-`)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/199640

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX