Я пытался найти эту проблему, но не смог выяснить, почему она на самом деле дает сбой на случайных этапах.
У меня есть CSV с 2 столбцами, идентификатором и URL-адресом, 100 строк.У меня есть следующий код для циклического перемещения по строкам CSV и использования метода put_file_contents () для загрузки данных по URL-адресам в файлы с именем [ID] .jpg.
Я также каждый раз выводю данные на экранвокруг цикла и добавив строку в «log.txt».По какой-то причине он просто перестает работать после случайного URL и ничего не помещает в error_log.
Иногда это после 17 URL, иногда после 27, иногда после 49. Я в растерянности из-започему происходит сбой.
<?php
set_time_limit(3600);
$data = array_map('str_getcsv', file('IDtoImageURL2.csv'));
$total = 0;
echo "Count total: ".count($data)."<br /><br />";
for($i = 1; $i < count($data); $i++)
{
file_put_contents("log.txt", $data[$i][1]." - ", FILE_APPEND | LOCK_EX);
$total++;
$url = $data[$i][1];
$img = "photos/".$data[$i][0].'.jpg';
$img2 = "photos/named/".$data[$i][0].'.jpg';
echo "<b>Getting ".$data[$i][0].":</b><br />";
echo "URL: ".$data[$i][1]."<br />";
echo "putting $img<br />";
echo "putting $img2<br />";
$imgData = file_get_contents($url);
if($imgData)
{
file_put_contents($img, $imgData);
file_put_contents($img2, $imgData);
echo "<b>Done</b><br /><br />";
file_put_contents("log.txt", "done".PHP_EOL, FILE_APPEND | LOCK_EX);
}
else
{
echo "<b>Failed</b><br /><br />";
file_put_contents("log.txt", "failed".PHP_EOL, FILE_APPEND | LOCK_EX);
}
}
echo "Total: ".$total;
?>
Вот данные CSV, с которыми я работаю.
Странно то, что иногда он отправляет часть вывода эха вэкран, а иногда он просто молча ошибки с пустым осыпи.URL-адреса перебираются в одном и том же порядке, и поэтому я не понимаю, почему результаты продолжают различаться.Любой вклад будет принят с благодарностью.
Спасибо за ваше время