Можно ли динамически перезагружать код PHP во время работы скрипта?

У меня многопользовательский сервер, использующий PHPSockets, и поэтому он полностью написан на PHP.

В настоящее время всякий раз, когда я делаю какие-либо изменения в PHP-скрипте сервера, мне приходится завершать скрипт, а затем запускать его снова. Это означает, что любые пользователи в сети отключены (обычно это не проблема, потому что в данный момент их не так много).

Теперь я переписываю серверный скрипт, чтобы использовать пользовательские классы PHP и немного упорядочить вещи (вы не хотите знать, как противно это выглядит сегодня). Сегодня я подумал: «Разве нельзя внести изменения в исходный код php без перезапуска всего скрипта?».

Например, я планирую иметь файл main.php, включающий user.php, содержащий классы MyUserи . game.php, который содержит класс MyGame. Теперь предположим, что я хотел бы внести изменения в пользователя .phpи «перезагрузить» сервер, чтобы изменения в user.phpвступили в силу, без отключения каких-либо онлайн-пользователей?

Я пытался найти другие вопросы, которые отвечали бы на этот вопрос, наиболее близкий мне вопрос: Изменение запущенного скрипта и его перезагрузка без его уничтожения (php), который, однако, не решает отключение онлайн-пользователей.

ОБНОВЛЕНИЕ

Мои собственные решения этой проблемы:

  1. В особых случаях включайте файл external.php, который может получить доступ к нескольким переменным и использовать их по своему усмотрению. При этом я должен был убедиться, что в коде нет ошибок, так как весь сервер рухнет, если я попытаюсь получить доступ к несуществующему методу.
  2. Переписать все это на Java, что дало мне возможность добавить систему плагинов с использованием динамической перезагрузки классов. Работает как шарм. До свидания, PHP.

6
задан Community 23 May 2017 в 10:27
поделиться