При работе со скриптами PHP мне обычно не нужно беспокоиться о базовой системе. Сегодня я должен.
Скрипт PHP (cronjob), который работал нормально, дает сбой 2 дня назад. Письмо cronjob, а также запуск сценария через оболочку говорят:
Bus-Zugriffsfehler (Speicherabzug geschrieben)
Если запустить тот же скрипт через PHP-FPM (через nginx), я получаю сообщение Bad Gateway, что, вероятно, также означает «Я разбился, оставьте меня в покое».
К сожалению, я не знаю, как найти дополнительную информацию, не говоря уже о том, чтобы решить проблему. Я уже проверил системный журнал (ничего не связанное с проблемой), dmesg
(ничего) и журнал ошибок PHP (ничего). Я также переустановил php5-cli, php5-pfm и даже libc6 и перезапустил сервер - никакого эффекта.
Между прочим: все это работает на виртуальном сервере (VPS), что также ограничивает вероятность аппаратной ошибки. PHP был недавно обновлен до php5-cli (5.5.9 + dfsg-1ubuntu4.7), но после этого скрипт работал нормально в течение 9 дней и двух перезагрузок ...
Любые идеи? Большое спасибо!
BurninLeo
РЕДАКТИРОВАТЬ: Решение
Конечно, регулярно отправляя echo
из сценария PHP не изящно, но помогает отслеживать проблемы до вызовов функций. И, конечно, тот, кто обратился за помощью, действительно чего-то коснулся, когда сказал, что не ...
Решение было довольно простым: статический метод класса вызвал себя в первой строке:
class ServerManager {
public static function dropCache() {
ServerManager::dropCache(); // VERY STUPID
foreach (array('active', 'packed', 'old') as $class) {
$cacheID = 'cache-'.$class.'-0';
Cache::drop($cacheID);
}
}
}
Что ж, возможно, PHP мог бы быть более конкретным в причине проблемы. Тем не менее, удаление этого решило проблему.