Php在服务器崩溃/关闭后以相同的状态恢复执行
我很想找到符合我要求的正确方法 假设您的php代码是->Php在服务器崩溃/关闭后以相同的状态恢复执行,php,Php,我很想找到符合我要求的正确方法 假设您的php代码是-> <?php for ($i=1; $i <= 100 ; $i++) { sleep(1); #sleep for a second echo "\n $i*2=". $i * 2 ; #do some work } ?> 上述程序每秒打印2张表格,并将执行到100秒 假设在第50秒服务器崩溃/重新启动/关闭 现在可以在第51秒恢复到与PHP相同的状态,包括临时/本地值和变量 或者,也可以休眠
<?php
for ($i=1; $i <= 100 ; $i++) {
sleep(1); #sleep for a second
echo "\n $i*2=". $i * 2 ; #do some work
}
?>
上述程序每秒打印2张表格,并将执行到100秒
假设在第50秒服务器崩溃/重新启动/关闭
现在可以在第51秒恢复到与PHP相同的状态,包括临时/本地值和变量
或者,也可以休眠PHP的执行。如果PHP不是答案的话,那我可以使用其他语言吗 我通常通过将状态保存到数据库中的文件或表中,并在每次启动脚本时检索最后的进度来完成此操作。这是一个猜测。我尝试了上面的代码,如果您只循环5次而不是100次,服务器不会超时。也许,出于某种原因,循环不会等待sleep(),但sleep()只会阻止输出。它可能会占用100秒的睡眠时间并超时。@Kobbe我的代码仅供参考:-)给定的PHP脚本执行时间通常为几毫秒。如果有几十个客户端同时出现,让服务器连续忙碌几分钟很快就会让服务器崩溃。更不用说客户端很可能会超时,除非脚本每隔几秒钟向它们提供任何内容。但是让系统自动备份每个正在运行的脚本的状态是不可能的。这就像让文字处理器每秒备份一次文件,或者让计算机以断电前一秒钟的状态重新启动一样。@kuroineko,比方说,我现在使用的是cron jobs,单线程,这可能吗?这就是为什么在编写大程序之前最好三思而后行的原因。欢迎来到计算机世界……是的,我经常这样做。但是我有很多本地变量和受保护的变量,我不能存储在数据库中。另外,使用DB state还存在一些问题,例如需要使用多重执行或锁定表