Я пытаюсь запустить параллельную загрузку изображений с помощью нескольких завиток. У меня есть короткий скрипт, который отлично работает для меня на моем ноутбуке (php 5.3.10-1), но сбой на моем сервере (PHP 5.5.3-1).PHP curl работает на одной машине, сбой другой
Когда я запускаю этот скрипт на своем сервере, создаются целевые файлы (я думаю, что завиток открывает дескриптор успешно), но файлы пустые, нет никаких предупреждений или ошибок, которые я мог видеть на своем сервере, чтобы указать любые вопрос.
Я проверяю его через CLI в данный момент, так что php.ini для PHP CLI, имеет:
error_reporting = E_ALL
display_errors = On
Это первое, что я сделал. Единственное, что я вижу, это предупреждение: PHP Предупреждение: модуль «PDO» уже загружен в Unknown on line 0
Ниже приведен пример исходного кода POC, который я написал/нашел в Интернете и отлично работает на моем ноутбуке, но не работает как на моем сервере. Буду признателен за ваши мысли. Спасибо и извините за то, что вы не поняли относительно уровня отладки.
<?php
$urls = array(
'http://static.php.net/www.php.net/images/php.gif',
'http://p.ebaystatic.com/aw/pics/globalheader/spr9.png'
);
$save_to = '/tmp/';
function add_file_to_curl($save_to, $mh, $url, $i){
global $conn, $fp;
$g=$save_to.basename($url);
if(is_file($g)){
unlink($g);
}
$conn[$i]=curl_init($url);
$fp[$i]=fopen ($g, "w");
curl_setopt ($conn[$i], CURLOPT_FILE, $fp[$i]);
curl_setopt ($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);
curl_multi_add_handle ($mh,$conn[$i]);
}
$conn="";
$fp="";
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
add_file_to_curl($save_to, $mh, $url, $i);
echo "URL IS $url, I is $i\n";
}
do {
$n = curl_multi_exec($mh,$running);
$ready = curl_multi_select($mh); // Waiting for one of the files to finish
if(0 < $ready){
while($info = curl_multi_info_read($mh)){
$status = curl_getinfo($info['handle'],CURLINFO_HTTP_CODE);
echo "STATUS $status\n";
if(200 == $status){
$successUrl = curl_getinfo($info['handle'],CURLINFO_EFFECTIVE_URL);
echo "$successUrl\n";
}
break 1;
}
}
}
while (0 < $running && -1 != $ready);
$info = curl_multi_info_read($mh);
$status = curl_getinfo($info['handle'],CURLINFO_HTTP_CODE);
echo "STATUS $status\n";
if(200 == $status){
$successUrl = curl_getinfo($info['handle'],CURLINFO_EFFECTIVE_URL);
echo "$successUrl\n";
}
foreach ($urls as $i => $url) {
echo "Running on $url and $i\n";
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);
fclose ($fp[$i]);
}
curl_multi_close($mh);
?>
ли вам –
Спасибо. Да, у меня есть сообщение об ошибках с сообщением об ошибке, и также отображаются ошибки. Я обновил исходное сообщение соответственно. – GibsonLP