Может кто подскажет) Есть программа, работающая как демон долгоиграющий. В ней используются несколько классов для обработки сообщений. При изменении одного из классов (не обязательного для работы всей программы) мне надо остановить этот демон, а потом запустить, чтобы при старте программы этот обновлённый класс подключился с новым кодом. Вот такое подключение на старте. Код (Text): <?php ... require_once 'class1.php'; ... require_once 'classN.php'; ... Собственно вопрос. Можно ли как-то переподключить один из классов без остановки всего демона? Что-нибудь вроде Код (Text): <?php ... unload('classN'); // unregister(); unreqiure(); etc... require_once 'classN.php'; ... Сам не нашёл такого способа, но вдруг кто-нибудь сталкивался.
меняйте код класса и перезапускайте демона. она запустится уже с новым кодом. а пока работает перезагрузить код скрипта нельзя
пхпшные инклуды как идея позаимствованы из Си. Просто, в момент интерпретации, вместо строки с инклудом вставляется содержимое подключаемого файла. Это даже не обязательно должен быть пхп-файл. Приинклудить можно что угодно. Потом, полученная простыня уходит в интерпретатор и исполняется. Во время исполнения "разынклудивать" или "переинклудивать" ничего нельзя, потому что уже нет никаких файлов со скриптами. В вашем случае видна проблема с архитектурой. Выносите все данные, которые следует обновить, во внешний файл, который можно будет читать в память. Парсите его, дергайте инфу. Не вздумайте евалить - ваш демон распухнет в оперативе и, в лучшем случае сдохнет по алерту пыха, если настройки правильные, а в худшем положит вам сервер, если настройки-таки кривые.
там не данные, там код, который, увы, получается отладить только в так сказать "продакшене". решил свою проблему с другой стороны. запустил ещё один демон, который использует только этот код, и уже его останавливаю-запускаю. основной демон теперь может работать без остановок до основного обновления. ура.