Сервер сбрасывает локальные соединения

#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, но это не решает мою проблему, просто игнорирует ее. И он тоже не зависает, он просто прерывает соединение, например, если я пытаюсь получить доступ к закрытому порту на моем сервере.