#php #ruby-on-rails #apache #debian
#php #ruby-on-rails #apache #debian
Вопрос:
У меня на моем сервере Debian два приложения, работающие под управлением Apache, одно на PHP, а другое на Ruby on Rails. Страница PHP выполняет много вызовов для запущенного приложения Ruby on Rails, оно вызывает file_get_contents по URL, например http://localhost/example.json
.
Проблема в том, что через некоторое время (обычно через несколько дней) он просто перестает работать, каждый раз, когда я пытаюсь установить локальное соединение, оно сбрасывается. Если я попытаюсь подключиться к localhost через другую службу (например, ssh), она работает нормально, и, если я попытаюсь подключиться к своему приложению rails извне этого сервера, оно тоже работает нормально.
Чтобы решить эту проблему, мне нужно перезагрузить сервер (иногда несколько раз), чтобы он работал правильно. Мне кажется, что сервер каким-то образом блокирует себя, но в /var/log/ messages не было ничего странного (именно там iptables регистрирует вещи, верно?)
Заранее спасибо!
Ответ №1:
Всякий раз, когда я выполняю file_get_contents, я запускаю его с void
$result = @file_get_contents
if(! $result) { // error
}
Это гарантирует, что ваш код не зависнет в функции, если (например) файл недоступен.
При этом у меня никогда не было блокировки моего сервера. Это только гарантирует, что остальная часть моего кода выполняется так, как должна. Возможно, ваш сервер зависает, потому что что-то хочет получить эти данные. Однако результат не должен быть таким драматичным.
Я надеюсь, что это хотя бы немного поможет. Мне любопытно услышать, что вы придумали.
Комментарии:
1. Да, я использую @ перед file_get_contents, но это не решает мою проблему, просто игнорирует ее. И он тоже не зависает, он просто прерывает соединение, например, если я пытаюсь получить доступ к закрытому порту на моем сервере.