Скажем, у меня есть этот классМожет ли 2 скрипта PHP запускаться отдельно друг от друга?
class Hello
{
/**
* Construct won't be called inside this class and is uncallable from
* the outside. This prevents instantiating this class.
* This is by purpose, because we want a static class.
*/
private function __construct() {}
private static $greeting = 'Hello';
private static $initialized = false;
private static function initialize()
{
if (self::$initialized)
return;
self::$greeting .= ' There!';
self::$initialized = true;
}
public static function greet()
{
self::initialize();
echo self::$greeting;
}
public static function changeGreet($new)
{
self::initialize();
self::$greeting = $new;
}
}
И у меня есть 2 сценариев, одна из которых я бегу в командной строке.
cmdLine.php (php cmdLine.php
)
for($i = 0; $i < 25;$i++){
echo Hello::greet() . PHP_EOL;
sleep(5);
}
И один, что я загрузить в браузере.
browser.php
Hello::changeGreet('NewGreet');
Я думал, после первого запуска cmdLine.php. а затем загрузку браузера.php, приветствие изменится при следующем запуске цикла, но это не так.
Это что-то, что можно сделать только с PHP?
Вы можете вызвать команды оболочки через shell_exec http://php.net/manual/en/function.shell-exec.php или аналогичные функции. '$ result = shell_exec (" cmd ")' вы получите полную строку возврата в одной переменной. –
Извините, это может быть неясно, это не проблема с командной строкой, с которой я столкнулся, я запускаю это в терминале для этого примера, это значит, что сообщение, выводимое из сценария командной строки, не изменяется, когда браузер запущен скрипт .php. –
Я думаю, что оба сценария управляются сервером в отдельных процессах, поэтому это невозможно. Это было бы, если бы вы использовали какое-то хранилище, которое могут передавать разные процессы (файловая система, база данных и т. Д.). – Kleskowy