您的位置:

php异步curl,php异步任务

本文目录一览:

如何通过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.