Гипотетический сценарий, у меня есть эти файлы:
file1.php:
#!/bin/php
<?php
echo "starting\n";
$pid = pcntl_fork();
define('ME', 'Parent');
if($pid == 0) {
include 'file2.php';
exit;
}
echo "I am: ".ME;
file2.php:
#!/bin/php
<?php
define('ME', 'File2');
echo "Defined: ".ME;
Когда я запускаю file1.php, я получаю ошибку, потому что ME уже определен, и вы не можете переопределить константу. Как я могу сказать php сбросить ВСЕ определенные константы и переменные, чтобы он мог включать новый файл, не перенося ничего? Насколько я могу видеть, мои единственные варианты — это использовать shell_exec или аналогичный для запуска команды оболочки для запуска нового php-процесса, но это кажется довольно окольным — есть ли способ очистить существующие определенные константы?
Мой конкретный вариант использования — это большой фреймворк со многими файлами, включенными на разных этапах, большинство из которых я не могу затронуть, поэтому вы можете предположить, что единственное, что я могу изменить в приведенном выше примере, — это содержимое if($pid == 0) { ... }
скобки.
Задача ещё не решена.
Других решений пока нет …