PHP函数的状态

PHP函数的状态,php,Php,如果脚本有效,我会将status.txta1添加到文件中,如果脚本无效,我会将0添加到文件中 <?php if (!file_exists("status.txt")) file_put_contents("status.txt", 0); //Create status.txt with value "0" //Read "status.txt" $status = file("status.txt"); if($status[0]!=1) start(); els

如果脚本有效,我会将
status.txt
a
1
添加到文件中,如果脚本无效,我会将
0
添加到文件中

<?php

if (!file_exists("status.txt"))
    file_put_contents("status.txt", 0); //Create status.txt with value "0"

//Read "status.txt"
$status = file("status.txt");

if($status[0]!=1)
    start();
else{
    echo "already working...";
}

function start()
{
    file_put_contents("status.txt", 1);//Start work
    sleep(10);
    file_put_contents("status.txt", 0);//End work
}

第二次运行脚本时,
start()
会运行,因为。。。
如果(!file_存在(“status.txt”)
将变为
false
(因为status.txt文件存在!!)和
文件内容(“status.txt”,0)也不会执行

但是
$status=file(“status.txt”)将被执行,
$status[0]
保存0,该0由之前运行的同一脚本预写。由于0不等于1,
start()
向上运行


因此,根据此脚本,每次执行
start()

实际上,我刚刚测试了完全相同的代码,它的工作原理与广告中的一样:)也许您的问题是试图从两个不同的位置运行脚本?(然后将在两个不同的目录中创建
status.txt
文件)您的脚本看起来不错。事实上,我刚刚运行了它(在控制台中),它的工作方式和您预期的一样。也许您的系统配置正在缓存文件内容。您的操作系统/网络服务器是什么?我正在使用denwer om my PCF当func start()工作时,status.txt包含1。在那一刻,我用同样的脚本运行另一个选项卡。