Поскольку в этом случае скрипт зависает, PHP, возможно, может не обрабатывать какой-либо дополнительный код, который может обнаружить это зависание.По этой причине я предлагаю изменить скрипт, чтобы вести журнал.Это позволило бы основному сценарию дать знать всему, что вне его, что он все еще работает, и с некоторыми хорошо размещенными обновлениями он также может помочь определить, где что-то пошло не так.
Запись в журнал может быть записана в файл илибаза данных и должна содержать хотя бы индикатор состояния сценариев, например дату последнего изменения.Если этот скрипт не работает постоянно, то что-то также должно указывать на то, что он работает или остановился.В приведенном вами примере запись журнала будет происходить в цикле while хотя бы один раз, возможно, больше.Открытие указателей или соединения с БД требует времени и ресурсов, поэтому я рекомендую регистрировать только то, что необходимо.(Примечание. При использовании подхода с использованием текстового файла файл необходимо будет закрывать сразу после каждой записи.)
Пример:
while (1) {
log('Running SQL select');
// Do a SQL select
log('Results retrieved');
// for any matching rows, do something
// (check log) if I have been running for longer than 60 mins, exit
}
function log($msg) {
// Write timestamp, $msg to log
}
Отдельный сценарий должен проверять журнал исообщать о любых ошибках, которые могут быть проблематичными, если на это влияет то, что приводит к зависанию основного скрипта, но я не могу придумать альтернативы.
Что касается памяти, если вы еще не используете mysql_free_result Вы должны дать ему попробовать.