2014-11-20 5 views
0

У меня есть скрипт на PHP, который работает навсегда.PHP Как вызвать метод из класса во время его запуска?

<?php 
require_once 'ClassA.php'; 
$a= new ClassA($param1, $param2); 
$a->start(); 
$a->setColor("blue"); 
while (1) { 
    echo $a->getColor(); 
} 
?> 

Как я могу изменить цвет $ a oject, когда получаю запросы GET/POST?

<?php 
if(isset($_GET["color"])){ 
    $color= $_GET["color"]; 
    $a->setColor($color); <<<--- Something like this 
} 
?> 

Спасибо!

+4

вы не можете. PHP не является «постоянным». Он будет работать в ответ на ** ONE ** http-запрос на ваш сервер. Если приходит другой запрос http, ** ДРУГОЙ ** копия сценария будет запущена. Вам понадобится межпроцессная связь, чтобы один HTTP-запрос повлиял на другой. –

+0

Вы не можете: экземпляр в 1-м исполнении скрипта полностью отделен от второго во втором - php имеет ничто иное arcitechture – Steve

+1

Если вы объясните, как работает этот скрипт навсегда или как он запускается, вы можете получить полезные подсказки о том, как достичь того, чего вы хотите. Однако, учитывая информацию, которую мы имеем до сих пор, это невозможно, как в предыдущих комментариях. –

ответ

0

Ваш «вечный скрипт» работает в своей собственной нити независимо от того, что происходит во внешнем мире. Вы не можете влиять на что-то подобное, просто так. Вам нужно будет специально написать сценарий, чтобы реагировать на внешние влияния и предложить внешнему миру механизм, с которым можно взаимодействовать со сценарием. Есть много возможностей:

  • скрипт считывает содержимое файла на каждой итерации, и что-то писать в этот файл (очень сырой)
  • одно и то же с базой данных (еще сырой)
  • же вещь, с некоторым в памяти магазина (лучше, еще сырого)
  • вы слушаете к трубе или розетке и писать к этому (лучше)
  • вы используете какой-то специальный сигнал прерывания сценария прослушивает (получение где-то)
  • вы используете некоторые несинхронная сотовая связь, например. ØMQ, Gearman или такой (довольно хорошо)

Какой лучший метод зависит от того, что именно вы хотите достичь, и о тех технологиях, которые вы знаете/готовы учиться.

Термин здесь - «цикл событий». В настоящее время у вас есть только «петля»; вы хотите, чтобы этот цикл реагировал на событий. Были получены такие события, как «содержимое файла», «сигнал прерывания», «что-то было написано на моей трубе» и т. Д.

-1

Для этого вам нужно добавить CRON JOB, а затем сохранить цвет в сеансе после получая запросы GET/POST, затем установите цвет вашего объекта на сеанс

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