Ребят! Помогите! Проблема в том что скрипт ооочень медленно выполняется. Суть скрипта очень проста - проверяет наличие файлов на уделенном хосте и заносит информацию в базу Из-за вот этого куска " $size=getimagesize($file_path);" все и начинает тормозится! Пробовал и другими способами проверять наличие файлов (заголовки, fopen), тоже самое очень тормозит. for ($i=1;$i<=10;$i++) { $file_path="http://isua.ru/acropol/reklama/1/photo/".$id."_".$i.".jpg"; $size=getimagesize($file_path); if ($size) $foto=$foto+1; }
проверяйте возвращаемый ответ (заголовок) при обращении к файлу http://www.php.ru/manual/function.get-headers.html
$file_path="http://isua.ru/acropol/reklama/1/photo/".$id."_".$i.".jpg"; $headers = get_headers($file_path); if ($headers['Content-Length']>2124) $foto=$foto+1; } Тоже самое... Очень долго скрипт работает, в чем может быть причина?? =((
id=номер строки из csv файла, тоесть это получается цикл внутри цикла... вардамп: string(48) "http://isua.ru/acropol/reklama/1/photo/395_1.jpg"
вероятно в том, что это изображения. чтобы определить его размер, нужно получить миме заголовок, хотя бы, этого изображения. даже если на доступ к файлу требуются милисекунды (а тут ещё скорость работы сервера, с которого считывается) и собственно ширина канала связи.. то при обработке 100 файлов к примеру, скорость всё равно не будет блестать.
Попробуйте, в дополнение к тому, что советовал Денис, поставить следующий код в начало скрипта Код (PHP): stream_context_set_default( array( 'http' => array( 'method' => 'HEAD' ) ) );
мне не нужно проверять его размер, мне просто нужно проверить существует ли файл или нет! Но фишка в том что апач настроен так что если картинки нет, он возвращает пустой файл, поэтому я именно размер и проверяю, по миме типу тоже пробовал - скорость работы такая же( пробовал на разных хостингах Добавлено спустя 4 минуты 45 секунд: после этого скрипт вообще перестал работать
у меня работает. С одинаковой скоростью. При плохом соединении метод HEAD будет работать заметно лучше. Но у вас, видимо самое медленное место, это скорость отдачи контента сервером, с которой, я так понимаю, вы уже ничего сделать не можете. ps: у меня скрипт выполняется в среднем за 5-8 секунд
У меня сейчас в базе 380 записей, у каждой может быть 10 фото, тоесть это 3800 проверок. Пинг с сервером 3мс, должно выполнятся меньше минуты! Добавлено спустя 44 секунды: Время выполнение скрипта: 783.8842010498 вот сколько у меня ушло
вы время обработки сервером вашего запроса учитываете? у меня выходит что на обработку одного запроса уходит в среднем пол секунды.
Помести на удалённом сервере PHP-скрипт, который получает полный список файлов, которые нужно проверить и проверяет, после чего возвращает ответ. А на своём сервере делай запрос к этому скрипту и передавай ему список файлов. Таким образом для проверки всех файлов будет нужен всего один запрос. Это, конечно, если есть доступ к тому серверу, на котором проверяется наличие файлов.
если тебе так тесно надо с ними сотрудничать, то надо как-то с ними договориться и получать актуальные данные одним запросом. Добавлено спустя 7 минут 29 секунд: надо параллелить проверки просто. запускать по три штуки в секунду. тогда актуальность будет в районе 20 минут.