我有一個腳本,在本地工作得很好,但是當我嘗試在網絡服務器上運行它時,它無法運行並超出了時間限制。CURL - 本地與網絡服務器
我有一個數組中的類別列表,其中的鍵是他們的ID和值是名稱。 Foreach類別我稱之爲curl命令,通過外部API獲取所有產品。是捲曲通話的設置如下:
foreach ($categories as $key => $value) {
$url_get_products = "http://luceed.euromdenis.hr:8081/datasnap/rest/artikli/GrupaArtikla/".$key;
$cp = curl_init();
curl_setopt($cp, CURLOPT_URL, $url_get_products);
curl_setopt($cp, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($cp, CURLOPT_TIMEOUT, 20);
curl_setopt($cp, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($cp, CURLOPT_VERBOSE, TRUE);
curl_setopt($cp, CURLOPT_ENCODING, '');
curl_setopt($cp, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($cp, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($cp, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($cp, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($cp, CURLOPT_FOLLOWLOCATION, TRUE);
curl_error($cp);
$product_result = curl_exec($cp);
curl_close($cp);
$data = json_decode($product_result, TRUE);
從那裏陣列與$ data變量
$arr_temp = $data['result'][0]['artikli'];
的所需要的部分初始化然後一個循環進入我檢查每一個產品
for ($i = 0; $i < count($arr_temp); $i++) {
由於api數據庫組織不良,因此沒有產品的圖像,因此我必須使用另一個url來獲取帶有正確標識的圖像。
圖片的URL看起來是這樣的:
random_url.com/slike/'.$product_id.'.jpg
所以我遍歷類別中的所有產品,並檢查是否有與現有的給定的URL使用此功能
function isUrlExist($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($code == 200){
$status = true;
}else{
$status = false;
}
curl_close($ch);
return $status;
}
圖像
如果存在圖像,則產品將添加到稍後生成csv文件的陣列中。
本地映像檢查是instantaneouslly完成的,但是當我在服務器端運行它永遠需要,當我有50-60個類別來檢查每個類別有幾百個產品的情侶時間限制很容易超過,腳本是停止。
有沒有解決方案,也許有一些捲曲選項?
P.S.這是信息,我得到當我從curl_info
Failed to connect to web-domain-name.com port 80: Connection timed out<br/>
嘗試添加在循環中:set_time_limit(300); – Mimouni
嵌套循環內? –
嘗試之後:foreach($類別爲$ key => $ value){set_time_limit(300); ......} – Mimouni