【问题标题】:PHP loading a function on startupPHP在启动时加载函数
【发布时间】:2012-05-07 23:09:43
【问题描述】:

我正在做一些 PHP 编程并且有一个问题:如何在 PHP 脚本首次运行时加载 PHP 函数,并且仅在首次运行时加载?

谢谢

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以使用锁定文件

    $lock = "run.lock" ;
    
    if(!is_file($lock))
    {
        runOneTimeFuntion(); //
        touch($lock);
    }
    

    编辑 1

    一次性函数

    runOneTimeFuntion ();
    runOneTimeFuntion ();
    runOneTimeFuntion ();
    runOneTimeFuntion ();
    runOneTimeFuntion ();
    runOneTimeFuntion ();
    runOneTimeFuntion ();
    runOneTimeFuntion ();
    
    function runOneTimeFuntion() {
        if (counter () < 1) {
            var_dump ( "test" );
    
        }
    
    }
    
    function counter() {
        static $count = 0;
        return $count ++;
    }
    

    输出

    string 'test' (length=4)
    

    【讨论】:

    • 谢谢爸爸。效果很好。但是,如果我关闭浏览器然后加载相同的页面,它不会将其检测为第一页加载。当用户完成页面后,我是否必须解锁锁?
    • 你不能真的看到很多重复的内容,比如stackoverflow.com/questions/2195581/…
    • 从来不知道你希望它在关闭浏览器后重新加载......我会在几分钟内更新我的代码
    • 我不太确定该代码是如何工作的...不是有一个简单的方法来解锁锁...锁语句在其他方面工作得很好。
    • 使用说你想让一个函数运行一次......这意味着它不能在 php 中的任何地方调用......错误或故意......这不是你想要的吗? ??
    【解决方案2】:

    每次你启动 php 脚本时,他都会作为一个新脚本启动,无论它之前被调用了多少次。

    如果您知道在 PHP 中禁止重新声明函数,请使用以下方法从外部文件加载函数:

    <?php require_once(my_function_file.php); ?>
    

    如果您希望 scrpt 记住他之前是否被调用过,可以使用某种形式的日志记录(数据库\文件)并在加载之前对其进行检查...但我看不出有任何理由以防万一函数加载...

    【讨论】:

      【解决方案3】:

      或者使用普通的布尔值...

      $bFirstRun = true;
      
      if( $bFirstRun ) {
          run_me();
          $bFirstRun = false;
      }
      

      【讨论】:

        【解决方案4】:

        有一个名为function_exists的PHP函数

        你可以在这个函数中定义你自己的函数,然后你就可以看到它是否存在。

        if (!function_exists('myfunction')) {
          function myfunction() {
            // do something in the function
          }
          // call my function or do anything else that you like, from here on the function exists and thus this code will only run once.
        }
        

        在此处阅读有关 function_exists 的更多信息:http://www.php.net/function_exists

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-07
          • 2010-10-26
          • 2023-04-02
          • 1970-01-01
          • 2012-11-18
          • 2016-04-15
          • 1970-01-01
          相关资源
          最近更新 更多