2013-07-16 2 views
1

Я пишу скрипт PHP, который загружает изображения из Интернета. Поскольку данные огромны, время выполнения сценария варьируется от 10 до 15 минут. Есть ли более эффективные способы обработки такой ситуации или я должен просто выполнить скрипт и позволить ему потребовать времени?PHP Скрипты с огромным количеством времени выполнения

+0

Это зависит от того, если вы хотите следить за ним и нужно ли он обращен к пользователю – user20232359723568423357842364

+1

Вместо этого запустите его из командной строки? Больше контекста помогло бы ... –

+0

Запустите его из командной строки (он также позволяет вам его контролировать), также установите тайм-аут на 0. –

ответ

1

Ваш скрипт, по-видимому, связан с вводом-выводом. Если вам не хватает полосы пропускания, вы можете сделать это немного.

Вы можете улучшить пользовательский интерфейс (если есть), увеличив интерактивность. Например, вы можете сохранить имена файлов, которые намереваются загрузить, и повторно отобразить страницу (и обновить ее или перейти по AJAX) после каждого из них, показывая ожидаемое время завершения, текущую скорость и процент завершения.

В принципе, сценарий будет сохранять в сеансе массив URL-адресов, и на каждой итерации поп некоторые из них и загружать их, возможно, проверяя время, которое требуется (если вы загружаете один файл за полсекунды, это стоит того скачать другой).

Поскольку сценарий выполняется несколько раз, а не только один, вам не нужно беспокоиться о его таймауте. Однако вам приходится иметь дело с возможностью прерывания пользователем всего процесса.

1

Я бы рекомендовал несколько потоков, чтобы сделать это быстрее, если нет ограничений по пропускной способности. но ближайшая вещь php имеет process control.

В качестве альтернативы когда-то я написал аналогичный скребок, и для его выполнения я использовал функции exec для создания нескольких потоков одного и того же файла. Следовательно, вам также необходимо создать механизм репозитория и блокировки. Звучит и выглядит грязно, но работает!

0

Если оптимизация стоит инвестировать время и если значительная часть времени выполнения расходуется на обработку изображений затем вызвать скрипт, который вращает несколько процессов может быть вариант

Смежные вопросы