动态更改PHP变量(在执行时)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态更改PHP变量(在执行时)相关的知识,希望对你有一定的参考价值。
我目前在我的机器上启动了一个永远运行的php脚本。
我在该脚本的源代码中做了一些更改:我已经在全局范围内更改了一个变量的值。
现在,如果我想要应用这些更改,我可以停止并重新启动脚本,但之后我将放弃此脚本已经完成的所有计算。所以我想在不重新启动PHP解释器实例的情况下应用我所做的代码更改。
我能这样做吗?
我想到的可能是在现有的“php.exe”进程中插入XDebug,并尝试从那里改变变量,但我不知道如何。
另一个想法是使用可以改变PHP解释器内存或符号表的软件,但我不知道任何类似的工具。
我在没有debuger的情况下启动了这个脚本,但是我知道Java在使用debuger时,可以选择“在不重新启动Java实例的情况下应用代码更改”。 PHP解释器有类似的东西吗?
您可以尝试自己的样本。使用以下代码创建PHP文件'myfile.php':
<?php
if (ob_get_status()) {
ob_end_clean();
}
$variable = 'Hello';
$i = mt_rand(0, 1000);
while (true) {
$i++;
echo $variable . ' ' . $i . PHP_EOL;
sleep(1);
}
在命令行中运行它:php -f myfile.php
你现在处于我目前的状态:脚本是永远运行的,它包含一个动态变量$i
(我实际上无法知道我的真实世界中的当前值,因为真实世界的情况没有输出)。
现在的挑战是将$variable
的值从'Hello'更改为'World'(表示我在现实世界中更改的变量值),但不会丢失$i
的当前值(表示当前完成的计算)。
请记住,在第一次运行脚本之前,您无法更改'myfile.php'代码:您必须使用与我显示的完全相同的代码运行'myfile.php',然后启动挑战。
除了调用尝试检查条件的函数之外,不在当前文件中:
$variable = function() {
return date('l') == 'Saturday' ? ':)' : ':(';
};
while (true) {
echo $variable() . PHP_EOL;
sleep(1);
}
你不能,你需要从某个地方读取新的价值!您可以使用这样的数据库或临时文件:
file1.php
<?php
file_put_contents('var.tmp','hello');
while(true) {
$var = file_get_contents('var.tmp');
print $var . PHP_EOL;
sleep(1);
}
file2.php
<?php
while(true){
$var = readline('$var > ');
file_put_content('var.tmp',$var);
}
打开2个终端,在第一个:
php -f file1.php
第二个
php -f file2.php
现在您可以将值写入第二个终端窗口,它将在第一个终端窗口中更改。
以上是关于动态更改PHP变量(在执行时)的主要内容,如果未能解决你的问题,请参考以下文章