2014-11-20 116 views
0

我在PHP中有一个脚本,可以做一些永远的工作。PHP如何在运行时从类中调用方法?

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

当我收到GET/POST请求时,如何更改$ oject的颜色?

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

谢谢!

+4

设置您的对象颜色。 PHP不是“持久性”的。它会响应** ONE ** http请求到您的服务器。如果有另一个http请求进入,那么脚本的** ANOTHER **副本将被激活。你需要某种进程间通信来允许一个http请求影响另一个。 – 2014-11-20 16:41:44

+0

你不能 - 第一次执行脚本的实例与第二次执行的脚本是完全独立的 - php有一个没有任何内容的任何东西arcitechture – Steve 2014-11-20 16:41:55

+1

如果你解释永久脚本是如何工作的或者它是如何启动的,那么你可能会得到一些有用的提示关于如何实现你想要的。但是,鉴于我们迄今为止的信息 - 根据以前的评论,这是不可能的。 – 2014-11-20 16:44:36

回答

0

无论外界发生什么事情,您的“永远脚本”都在自己的线程中运行。你无法影响它所做的任何事情。您需要特别编写脚本以对外部影响作出反应,并为外部世界提供与脚本进行交互的机制。有很多可能性:

  • 脚本读取每个迭代一个文件的内容,你写的东西到文件(很粗品)与数据库
  • 同样的事情(仍然原油)
  • 相同一些内存存储(更好的,还是原油)
  • 你听管道或插座和写入(更好)
  • 你使用一些特殊的中断信号剧本听(一些进展)
  • 事你用一些asy同步插座通信,例如ØMQ,Gearman或这样的(很不错)

最好的方法是什么取决于你想要达到什么样的目标以及你知道/愿意学什么技术。

这里的术语是一个“事件循环”。目前你只有一个“循环”;你想得到这个循环以对事件做出反应。诸如“文件内容改变”,“接收到中断信号”,“有人在我的管道上写了一些东西”等事件。

-1

您必须为此添加CRON JOB,然后将您的颜色存储在会话中接收GET/POST请求,然后通过会话

相关问题