IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Нестабильная работа php (http://www.imho.ws/showthread.php?t=96264)

Oleg 21.11.2005 16:17

Нестабильная работа php
 
Привет всем!

Меня попросили разобраться с проблемами выполнения сложного php скрипта, который генерит структуру сайта.

На одном сайте используются несколько скриптов на PHP, которые выполняют большую работу, как-то: рассылка, генерация структуры разделов итд…

Симптомы нестабильной работы разные, или скрипт говорит про ошибки с памятью, или вылетает по тайм-ауту, в общем, по-всякому бывает.

Скрипты "рабочие", написаны профессионалами (из РБК), и весьма навороченные (достаточно сложные для понимания).

Под небольшой нагрузкой сервера работают нормально. Скажем, с утра скрипт работает, а к обеду - нет.

Технические параметры на сервере :

Linux 2.4.20
Apache 2.0
PHP 4.3.2

memory_limit 8M
max_execution_time 30
max_input_time 60

Сайт хостится на РБК (это достаточно дорогой хостинг), где еще находится, наверное, около сотни сайтов.

Скрипт, который вызывает самую большую головную боль, выполняется примерно раз в день, он занимается генерацией другого php скрипта (который и выводит сайт). Так вот, примерно 9 попыток из 10 запустить этот скрипт заканчивается неудачей (вылетом с сообщением об ошибке).

Какие можно дать советы по устранению этой проблемы?

Проблемные куски нестабильного php кода у меня на руках...

RaZEr 21.11.2005 17:52

Цитата:

Симптомы нестабильной работы разные, или скрипт говорит про ошибки с памятью, или вылетает по тайм-ауту, в общем, по-всякому бывает.
Во-первых РБК обязан ответить на вопросы нестабильной работы своего скрипта на своём же хостинге. А во-вторых решение вполне очевидное: увеличивайте memory_limit и max_execution_time.

Sheryld 21.11.2005 23:51

1. Почему нельзя изменить максимальный лимит по времени в конкретном скрипте? Например, на мастерхосте это можно сделать функцией set_time_limit, для скриптов, запускаемых из-под cron-а(как cgi) это работает. У меня там несолько парсеров висят, которые могут выполняться минут 20-30...Правда php(5.1 dev) я собирал сам(cgi).
С перлом аналогично(синхронизатор бд у нас работает достаточно долго).

2. Ограничение по-памяти — это логично, и тут нужно как-то выкручиваться, либо «бить» скрипт на стадии, либо вообще переписывать его на c.

Ну и код в студию.

Oleg 22.11.2005 09:11

Код по соображениям безопасности опубликовать не могу, но ...

Проблема решилась! Добавили две строчки в начало скрипта, и все работает!

Код:

ini_set ("max_execution_time", "60");
ini_set ("memory_limit",      "32M");



Часовой пояс GMT +4, время: 19:09.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.