2015-10-21 3 views
3

Скажем, у меня есть этот классМожет ли 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?

+0

Вы можете вызвать команды оболочки через shell_exec http://php.net/manual/en/function.shell-exec.php или аналогичные функции. '$ result = shell_exec (" cmd ")' вы получите полную строку возврата в одной переменной. –

+0

Извините, это может быть неясно, это не проблема с командной строкой, с которой я столкнулся, я запускаю это в терминале для этого примера, это значит, что сообщение, выводимое из сценария командной строки, не изменяется, когда браузер запущен скрипт .php. –

+0

Я думаю, что оба сценария управляются сервером в отдельных процессах, поэтому это невозможно. Это было бы, если бы вы использовали какое-то хранилище, которое могут передавать разные процессы (файловая система, база данных и т. Д.). – Kleskowy

ответ

1

Это то, что это возможно сделать только с PHP ?: No.

Своего рода посредник для этого требуется, чтобы работать. Файл, база данных или что-то еще потребуется.

(например)

В initialize(), вы могли бы его открыть файл с file_get_contents(), а затем сохранить приветствие с file_put_contents(), когда вам нужно, чтобы изменить его.

+0

Это несчастливо, но это то, что я думал, что ответ будет. –

Смежные вопросы