防止代码或函数执行多次


Prevent Code or Function from Executing More Than Once

是否有一种方法可以防止代码块或代码中的函数运行不止一次,即使我重新执行(或重新加载)PHP文件?

我的意思是,我可以限制某人执行php脚本不止一次吗?我似乎找不到做这件事的方法。

是的,您可以使用$_SESSION变量来确定代码是否已被执行。会话变量将一直设置到用户关闭浏览器为止。如果你想进一步扩展它,你可以设置一个cookie。详情请参阅以下连结

会话变量饼干

如果您正在使用会话,那么您可以在代码执行后在用户的会话数组中设置一个标志:

function doSomething(){
   if (empty($_SESSION['completed'])){
      //Do stuff here if it has not been executed.
   }
   $_SESSION['completed'] = TRUE;
}

您还应该检查会话变量,以查看先前是否执行过任务。这假定用户可以接受会话cookie。

我有一个应用程序可以做到这一点。

我们所做的是在数据库中创建一个名为version的表,并在其中存储一个版本号。当脚本运行时,它将数据库中的版本号与php脚本中的版本号进行比较。并执行将其"升级"到新版本所需的任何操作,然后更新数据库中的版本号。

当然,如果版本表不存在,代码将创建它并将其标记为存储版本0

在函数中添加一个计数器。如果计数器大于0,则不做任何操作。计数器变量应该是静态的,以便在多个调用中"记住"它。

function sample() {
     static $call_counter = 0;
     if ( $call_counter>0 ) {
         return;
     }
     ...
     $call_counter++;
 }

为了确保文件只执行一次,只需使用"include_once()"而不是"include()"