sae是什么, taskqueue是什么, 这些我就不多说了… 凡是用新浪sae的人都该知道的~
主要讲以下两个重要的点(说实话, 新浪sae的文档有些地方还是很隐晦的, 必须得自己摸索啊!)
1. 使用方式
sae文档中针对taskqueue的单个调用是如下说明:
$array=array(); for($i=0;$i<1000;$i++) $array[]=array('url'=>"http://freedemo.sinaapp.com/sendweibo.php", "postdata"=>user[$i]); $queue->addTask($array);
实际上再往文档的后面看, 还有一段很重要很重要的代码:
//将任务推入队列 $ret = $queue->push(); var_dump($ret);
这个$queue->push(), 不写的话上面的addtask都木有用啊魂淡…幸亏老子看文档看得仔细=.=
2. 如何使用post方式添加数据(get方式的很简单, 就和平时一样xx=1&yy=2这样)
$array = array(); $array[] = array('url'=>"http://freedemo.sinaapp.com/yourtask1.php", "postdata"=>"act=test"); $array[] = array('url'=>"http://freedemo.sinaapp.com/yourtask2.php", "postdata"=>"act=test", "prior"=>true); $queue->addTask($array);
再次看文档, 里面只有这么一小段的示例代码.
怪我太笨啊, 一直认为这个act=test的post请求是说, post过来的是”act=test”. 我当时还想, 这个和get方式的请求内容好像啊…那如果我要post多个数据, 应该是用数组的吧比如array(‘xx’=>1,’yy’=>2)这样
结果post请求的一直失败, 老子真是火大啊!
经过google+baidu+sae文档+自己尝试, 终于知道了…原来taskqueue的post请求参数就是字符串, 不是数组! 而且和get的方式一样, 依然写成xx=1&yy=2这样的形式才可以!
他大爷的…
给出这样一段简单代码, 大家可以直接把post的数组转化成字符串:
function array_join($array) { $join = array(); if (is_array($array)) { foreach ($array as $key => $value) { $join[] = $key."=".$value; } } return $s = implode("&", $join); }
那么接收请求的时候呢? 接收请求的时候又得当成是array了才行, 比如xx=1&yy=2. 解析xx就是用$_POST['xx']这样的形式…
真是不得不说, 这个参数真是令人蛋疼=.=
***后记:
我圡了…其实php就有以上这段代码的功能的, 而且比我写的肯定好上不止一点儿…
http_build_query, 这个函数, 可以直接拼装成我们post请求所需要的字符串~可以参见手册: http://php.net/manual/en/function.http-build-query.php
本文链接:https://www.poisonbian.com/post/101.html 转载需授权!