我有一个PHP脚本,它将在具有无限循环的VPS上全天候运行,但问题是如何在需要时按顺序打破php脚本中的无限循环以使脚本正确存在?
我知道我可以杀死进程,但如果我杀了,那么脚本会立即停止 并且我的循环大小非常大,如果在杀死进程的时候执行是在循环中间的某个地方,那么循环的剩余一半将不会被执行并且它将产生错误。我循环后也有一些代码,所以如果进程被杀死那么代码就不会被执行。
所以我的问题是如何打破在后台运行的PHP脚本的无限循环,而不会杀死进程?
答案 0 :(得分:1)
而不是:
while(true) {
执行:
while(!file_exists("KILL")) {
然后,当您想要终止脚本时,只需创建KILL文件即可。你可以通过一个只为你创建该文件的kill.php
脚本来让自己更容易,所以你不必记住要做什么。
就个人而言,我发现PHP脚本更容易与EXE一起用于控制台应用程序,但这只是意见。
答案 1 :(得分:0)
Q1。 Windows任务计划程序..不要插入任何循环,只需插入CGI目录,然后创建时间。
Q2。如果你问我,PHP会更好。
但是,它不是关于性能的。答案 2 :(得分:0)
听起来像是在对服务器进行编码,看看这个,希望它有所帮助。
<?php
class ServerManager
{
private $serverState;
public function process()
{
if(!$this->getServerState())
{
return;
}
$this->processNewConnections();
$this->processExistingConnections();
}
public function setServerState($state)
{
$this->serverState = $state;
}
public function getServerState()
{
return $this->serverState;
}
private function processNewConnections()
{
...
}
private function processExistingConnections()
{
...
if(connected client has requested that the server should stop)
{
$this->setServerState(false);
}
...
}
}