以前写的计划任务程序,发现有时和预期结果不同
程序员文章站
2022-03-27 11:13:53
...
URL Path 函数 Windows 服务器
程序会自动访问自身,并在18:00的时候访问目标网址http://127.0.0.1/to.php?pwd=123456789,访问一次,但有时发现会访问多次,次数是随机的,出现这种情况的时间也是随机的
get_content(self::$url); echo '运行成功'; $fp = fopen("runtime.txt","w"); fwrite($fp,date("d")); fclose($fp); } $time = file_get_contents("time.txt"); if (($nowtime - $time) >= self::$myselftime) { sleep(self::$myselftime); $this -> get_content(self::$myself); $fp = fopen("time.txt","w"); fwrite($fp,$nowtime); fclose($fp); } }}$job = new runjob();$job -> main();
程序会自动访问自身,并在18:00的时候访问目标网址http://127.0.0.1/to.php?pwd=123456789,访问一次,但有时发现会访问多次,次数是随机的,出现这种情况的时间也是随机的
回复讨论(解决方案)
PHP没有定时的功能吧。
最保险的方法就是有人访问,然后触发这个“定时”。
可以装个win32的扩展库
由于$this->get_content()请求发出时,web服务器会开出新的线程去接收你的请求(访问自身或者访问你的目标url),这实际上就相当于多个并发的访问。很可能你的文件内容还没写入,新的请求就过来了,因此,if ((self::$urltime_H == date("H")) && (self::$urltime_i == date("i")) && ($time != date("d")))这个判断可能会有效多次。自然会有多次的访问。