【问题标题】:Run a php script as a background process in wamp server在 wamp 服务器中将 php 脚本作为后台进程运行
【发布时间】:2011-05-13 00:07:37
【问题描述】:

我有两个 php 脚本需要在 WAMP 服务器中作为连续后台进程运行。

Wamp 服务器安装在 Windows 7 PC 中。这些脚本已经位于 www 根目录中的单独文件夹中。

Apache 版本:2.2.8
PHP版本:5.2.6

由于这不是我无法使用的 unix 平台 nohup php script.php > /dev/null & 命令来完成这项工作。我正在寻找适用于 wamp 服务器 windows 平台的类似命令或方法。

谁能解释我完成这项任务需要采取的步骤?

【问题讨论】:

  • 这不完全是一个编程问题。
  • 认为这是我应该发布的地方。无论如何,非常感谢任何帮助......

标签: php windows wamp background-process


【解决方案1】:
  1. 创建一个批处理文件以使用 php 可执行文件“C:\wamp\php\php.exe C:\wamp\www\index.php”运行您的 php 脚本
  2. 在 Windows 控制面板的计划任务中添加此批处理文件。

【讨论】:

  • 嗨,谢谢。我只是按照你说的创建了两个 bat 文件,它可以工作。
【解决方案2】:

只需使用此功能。它适用于两种操作系统(Windows 和 Linux):

function execInBackground($cmd){
    if (substr(php_uname(), 0, 7) == "Windows"){ 
        pclose(popen("start /B ". $cmd, "r"));  
    }else{ 
        exec($cmd . " > /dev/null &");   
    } 
} 

这是一个如何使用该函数的简单示例:

execInBackground('php feed/handleFeed.php db_name '.$second_param);

在上面的例子中,我们启动脚本 handleFeed.php,它位于名为 "feed" 的文件夹中,我们传递 2 个参数(数据库名称和其他一些第二个参数)。

【讨论】:

  • @Dejv ,我们是否需要授予任何用户权限才能运行上述脚本?因为当我在上面运行脚本以在 db 中插入一些记录时,它在 mysqli 错误下方说。 PHP 致命错误:未捕获的错误:调用 D:\xampp\htdocs\adeptra\ping.php:10 中的未定义函数 mysqli_connect() 堆栈跟踪:我在 mysql / mysqli 中都收到此错误。其余所有其他文件都工作正常。只有我遇到了这个后台进程的问题。
  • @user3408779 这可能不是权限相关的问题。试试this
  • 感谢您的评论,我去看看
  • 在Windows下,有时进程会在子进程($cmd)初始化之前关闭太快。可以解决这个问题的小修改: $p = popen("start /B". $cmd, "r");睡眠(5); pclose($p);
【解决方案3】:

在此之间:http://php.net/manual/en/install.windows.commandline.php,并使用“at”实用程序,您应该能够使其工作。

【讨论】:

    【解决方案4】:

    您可以在启动后台脚本之前使用“start”。示例:

    创建 cron.cmd
    start /B php.exe "path to your script 1"
    start /B php.exe "path to your script 2"
    

    您可以向 man 展示有关启动命令的信息:

    1. -R
    2. 输入cmd
    3. 输入help start

    【讨论】:

      【解决方案5】:

      这就是我所做的:

      1. PHP 文件

        <?php my code goes here ?>
        

        *请注意,如果您在 CLI 中使用 HTTP API/CURL,请使用 dl("php_curl.dll");

        这会将 curl 加载到 cli 中

      2. 现在我将PHP添加到windows路径变量中,这可以从我的电脑、属性、高级设置、环境变量、新建

      3. 接下来我创建了一个 .bat 文件,只需打开记事本并在下面输入代码并保存为 myfile.bat

        @ECHO OFF
        php -f d:\wamp\www\V3\task.php
        

        This site 可能会帮助您了解 .bat 文件的语法。

      4. 现在在windows上新建一个定时任务,调用上面的.bat文件作为源,

      【讨论】:

      • 请不要两次发布相同的答案 - 您的答案有许多格式和拼写问题,重复这意味着这些问题必须在两个地方而不是一个地方修复。但是,您可以将问题标记为完全重复的问题。
      【解决方案6】:

      /// 我们可以使用下面的代码在windows Xampp服务器中作为后台进程执行PHP脚本文件。

      <?php
          exec('C:\xampp\php\php.exe C:\xampp\htdocs\project\bg_script.php);
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多