Я пишу скрипт PHP, который загружает изображения из Интернета. Поскольку данные огромны, время выполнения сценария варьируется от 10 до 15 минут. Есть ли более эффективные способы обработки такой ситуации или я должен просто выполнить скрипт и позволить ему потребовать времени?PHP Скрипты с огромным количеством времени выполнения
ответ
Ваш скрипт, по-видимому, связан с вводом-выводом. Если вам не хватает полосы пропускания, вы можете сделать это немного.
Вы можете улучшить пользовательский интерфейс (если есть), увеличив интерактивность. Например, вы можете сохранить имена файлов, которые намереваются загрузить, и повторно отобразить страницу (и обновить ее или перейти по AJAX) после каждого из них, показывая ожидаемое время завершения, текущую скорость и процент завершения.
В принципе, сценарий будет сохранять в сеансе массив URL-адресов, и на каждой итерации поп некоторые из них и загружать их, возможно, проверяя время, которое требуется (если вы загружаете один файл за полсекунды, это стоит того скачать другой).
Поскольку сценарий выполняется несколько раз, а не только один, вам не нужно беспокоиться о его таймауте. Однако вам приходится иметь дело с возможностью прерывания пользователем всего процесса.
Я бы рекомендовал несколько потоков, чтобы сделать это быстрее, если нет ограничений по пропускной способности. но ближайшая вещь php имеет process control.
В качестве альтернативы когда-то я написал аналогичный скребок, и для его выполнения я использовал функции exec для создания нескольких потоков одного и того же файла. Следовательно, вам также необходимо создать механизм репозитория и блокировки. Звучит и выглядит грязно, но работает!
Если оптимизация стоит инвестировать время и если значительная часть времени выполнения расходуется на обработку изображений затем вызвать скрипт, который вращает несколько процессов может быть вариант
- 1. Управление огромным количеством объектов
- 2. Работа с огромным количеством операторов выбора
- 3. Страница рендеринга с ОГРОМНЫМ количеством HTML
- 4. Как управлять огромным количеством сокетов
- 5. Кэширование ClientSide DropDownList с огромным количеством данных?
- 6. View Pager с огромным количеством фрагментов
- 7. Джанго FilteredSelectMultiple с огромным количеством данных
- 8. node-postgres с огромным количеством запросов
- 9. Как бороться с ListBox с огромным количеством ItemSource в wpf?
- 10. Несколько соединений к PostgreSQL с огромным количеством закладных
- 11. Чтобы получить счет из таблиц с огромным количеством данных
- 12. Работа с огромным количеством правил (условия и ограничения) Системы CEP
- 13. Избегайте времени выполнения PHP
- 14. Расширение времени выполнения PHP
- 15. Entity Framework Отключен POCO, отношения с огромным количеством записей
- 16. Как сделать книгу или отчет с огромным количеством изображений?
- 17. Как сделать матрицу текстового документа с огромным количеством тегов
- 18. Итерация 1 строка за раз с огромным количеством ссылок/объединений
- 19. Как быстро сортировать dict() с огромным количеством ключей?
- 20. Jboss 4.2.3 Приложение с огромным количеством анонимных тем
- 21. Карточная игра с огромным количеством карт и сложными действиями
- 22. методов рефакторинга в существующей базе кода с огромным количеством параметров
- 23. Вывод курсора MS SQL Server с огромным количеством результатов
- 24. Как прокручивать эффективно в NSScrollview с огромным количеством данных?
- 25. Как оптимизировать группу в таблице с огромным количеством записей
- 26. Кэш времени выполнения PHP
- 27. PHP cURL - ограничение времени выполнения
- 28. PHP-скрипты с кукисами
- 29. SQL-запрос с огромным время для выполнения MySQL
- 30. SQL удаления ошибка времени выполнения с PHP
Это зависит от того, если вы хотите следить за ним и нужно ли он обращен к пользователю – user20232359723568423357842364
Вместо этого запустите его из командной строки? Больше контекста помогло бы ... –
Запустите его из командной строки (он также позволяет вам его контролировать), также установите тайм-аут на 0. –