本文目录一览:
如何通过php的curl模拟ajax请求,获取其返回值
这个需要配合js,打开一个html页面,首先js用ajax请求页面,返回第一个页面信息确定处理完毕(ajax有强制同步功能),ajax再访问第二个页面。(或者根据服务器状况,你可以同时提交几个URL,跑几个相同的页面)
参数可以由js产生并传递url,php后台页面根据URL抓页面。然后ajax通过php,在数据库或者是哪里设一个标量,标明检测到哪里。由于前台的html页面执行多少时候都没问题,这样php的内存限制和执行时间限制就解决了。
因为不会浪费大量的资源用一个页面来跑一个瞬间500次的for循环了。(你的500次for循环死了原因可能是获取的数据太多,大过了php限制的内存)
不过印象中curl好像也有强制同步的选项,就是等待一个抓取后再执行下一步。但是这个500次都是用一个页面线程处理,也就是说肯定会远远大于30秒的默认执行时间。
cURL能异步吗
可在github里找 curl-easy library.
?php
// Init queue of requests
$queue = new \cURL\RequestsQueue;
// Set default options for all requests in queue
$queue-getDefaultOptions()
-set(CURLOPT_TIMEOUT, 5)
-set(CURLOPT_RETURNTRANSFER, true);
// Set function to be executed when request will be completed
$queue-addListener('complete', function (\cURL\Event $event) {
$response = $event-response;
$json = $response-getContent(); // Returns content of response
$feed = json_decode($json, true);
echo $feed['entry']['title']['$t'] . "\n";
});
// 异步curl
$request = new \cURL\Request($url1);
// Add request to queue
$queue-attach($request);
$request = new \cURL\Request($url2);
$queue-attach($request);
// Execute queue
while ($queue-socketPerform()) {
echo '*';
$queue-socketSelect();
}
php中设置Curl的问题 PHP版本 5。3。3
1.写一个phpinfo查看文件
?php
phpinfo();?
2.然后在phpinfo里面搜索
php.ini
找到php.ini的位置,确认你修改的php.ini和实际运行的php.ini是一个文件。
3.检测php.ini中的ext目录是否为你放php_curl.dll的目录
4.检测php的ext目录是否在系统环境变量中
php curl 是异步还是同步
同步执行。
CURLOPT_TIMEOUT: The maximum number of seconds to allow cURL functions to execute.