Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php在服务器崩溃/关闭后以相同的状态恢复执行_Php - Fatal编程技术网

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代码是->

<?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还存在一些问题,例如需要使用多重执行或锁定表