@muxalich
PHP, ZEND, JS, PJAX, JQ, JQ UI, MySQL

Как определить наличие файлов на удаленном сервере, с помощью распараллеливания?

Здравствуйте, стоит задача определить наличие файлов на удаленном сервере.
Сейчас используется

$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);

- на определение одного файла уходит 0.2 секунды. А на странице где я делаю проверку - минимум 50 файлов, в следствии чего страница грузиться по 10 секунд. Удаленный сервер - selectel cdn storage, php-скрипты на нем выполнять не могу. Собственно вопрос возможно ли распаралелить определение наличия файла ?

Возможно посоветуете другой способ.

Спасибо, за помощь, остановился на варианте, создать таблицу проверка файлов, при отображении файлов сначало смотреть в таблице, если в ней файлы есть, то их не проверять, если файлов нет, то проверяем через curl_multi. При изменении файла удаляем запись из таблицы.
Перед этим каждый раз проверяем доступность хостинга, если хостинг не доступен выводим фото по умолчанию.
  • Вопрос задан
  • 615 просмотров
Решения вопроса 2
shaks
@shaks
Такие задачи нужно делать в фоне по какому-то расписанию или определённым событиям. И обязательно вести логи.
Это сейчас у Вас 50 файлов (а в будущем может 500 будет, кто знает), и у вас все работает как должно работать. А случись что с ДЦ? фаза луны не та? у вас вобще всё повиснет, т.к. на каждый запрос будет уходить выставленный таймаут в курле (30 сек по умолчанию помоему).

Ну и гляньте еще в сторону multicurl
php.net/manual/ru/function.curl-multi-init.php
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1) Как правильно написал Shaks - такие вещи надо делать в фоне
2) Для работы в параллели посмотрите например на форки habrahabr.ru/post/148688
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@2vtlk
Можно попробовать использовать fsockopen, он гораздо быстрее отрабатывает, но все-равно лучше делать это параллельно. 3NVMnB
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы