我有一个脚本,在本地工作得很好,但是当我尝试在网络服务器上运行它时,它无法运行并超出了时间限制。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