21,893
社区成员




<?php
// file: newclass.php
class Example {
function foo() {
return "bar!\n";
}
}
?>
<?php
// requires newclass.php (see above)
class Example {
function foo() {
return "foo!\n";
}
}
$e = new Example();
// output original
echo $e->foo();
// import replacement method
classkit_import('newclass.php');
// output imported
echo $e->foo();
?>
以上例程会输出:
foo!
bar!
while (true) {
$messageBody = $cacheHandle->brpop(array(
XXQueue::QUEUE_KEY_LEAVE1,
XXQueue::QUEUE_KEY_LEAVE2,
XXQueue::QUEUE_KEY_LEAVE3
), 0);
list($key, $value) = $messageBody;
$jsonContent = json_decode($value, true);
$className = $jsonContent['class'];
$params = $jsonContent['params'];
// 固定在某个命名空间下面
$classInstance = 'Api\\Queue\\' . $className;
XXLog::OriginalWriteArray("queue_message", [
'time' => date('Y-m-d H:i:s'),
'class_name' => $classInstance,
'value' => $value,
'result' => 'begin'
]);
if (!class_exists($classInstance)) {
continue;
}
try {
$newClass = new $classInstance();
if (!$newClass instanceof Queue\IQueue) {
XXLog::OriginalWriteString("queue_message", "$newClass not implements Queue\\IQueue!");
continue;
}
$newClass->run($params);
......
include "B.php";
while (true) {
$aa = new AAA();
$aa->BBB();
sleep(5);
}
B.php
class AAA {
public function BBB() {
echo "AAA!!!!11111111111111111111111111";
// 在cli模式下面运行A.php以后,改echo后面的内容,是没有用的
}
}
while(true){
if (从Redis里面读取内容 class.function) {
include class 所在的文件
$aa = new classA();
$aa->functionA();
}
}
B.php
public class ABC {
public function functionA() {
// 1. 在控制台cli模式下面执行A.php
// 2. 修改这里的内容,会发现修改的内容不会反映到while里面
}
}
目前只有重启才可以解决这个问题,我希望解决这个问题,看有没有比较好的方法