本文目錄一覽:
如何通過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.
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/293080.html