Как оптимизировать скрипт? Доброго времени суток.
Есть скрипт который работает в фоновом режиме. Работает "бесконечно" долго, остановиться должен лишь когда сам того пожелает, то бишь при выполнении условия N.Общая суть такова:
1. Обращаемся через Curl к ПУ сервиса N, который не имеет никакого API.
2. Берем данные, с помощью PHPQuery вытаскиваем что нужно в массив.
3. Проводим проверки на соответствие и на ошибки.
4. Пишем данные в файл в текстовом формате с помощью file_put_contents.
5. Проверяем достижение условия N.
5. Повторяем операцию снова и снова и снова...Вопрос состоит в следующем. Скрипт вылетел через какое-то время с ошибкой Fatal error: Out of memory.
Прописал в начало скрипта:ini_set('xdebug.remote_autostart', 0);
ini_set('max_execution_time', 0);
Не помогло, хотя от предыдущей ошибки max_execution_time избавился, XDebug как оказалось, не выключился, как ожидалось и все это время ужасно тормозил и без того медленный скрипт.
Можно конечно выставить: ini_set('memory_limit', -1); но это не решение проблемы.
Где-то происходит утечка памяти, может нужно очищать переменные и цикл после итерации, может нужно вместо file_put_contents использовать fopen?
Может вы знаете что-то еще, что может влиять на память, буду рад услышать любой совет.

21 Авг 2019 в 06:24
194 +1
0
Ответы
1

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

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

Используйте необходимые ресурсы: вместо использования функции file_put_contents, попробуйте использовать fopen и fwrite для записи данных в файл. Это может помочь уменьшить использование памяти.

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

Избегайте лишних операций: убедитесь, что ваш скрипт не выполняет лишние операции или запросы. Минимизируйте количество запросов к сервису и избегайте излишних операций.

Мониторинг использования памяти: используйте функцию memory_get_usage() для отслеживания использования памяти в разных частях скрипта и идентификации участков, где происходит утечка памяти.

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

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир