代码之家  ›  专栏  ›  技术社区  ›  Tower

执行另一个PHP文件而不等待它完成执行

php
  •  3
  • Tower  · 技术社区  · 16 年前

    我有startserver.php文件,如果服务器还没有启动,它就基本上启动服务器。除了startserver.php将永远挂起,等待shell exec()'d文件server.php完成它从未完成的执行之外,一切工作都很完美。

    有没有一种方法可以执行一个PHP文件,而不必等待它的执行完成?

    编辑:它必须在Windows和Linux上工作。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    这应该对你有帮助- Asynchronous shell exec in PHP

    基本上,你 shell_exec("php Server.php > /dev/null 2>/dev/null &")

        2
  •  0
  •   Robin    16 年前

    你需要像这样的东西 pcntl functions . 唯一的问题是,这是一个非Windows扩展,不适合在Web服务器内部运行。我唯一能想到的其他可能性是 exec 手动操作并分叉当前进程(如dekomotes的答案中所建议的那样),执行操作系统检测以找出所需的命令。请注意,这种方法与使用PCNTL函数(至少在Linux中)没有太大的不同——符号和字符导致第二个脚本在不同的进程中运行。PHP不支持多线程/多进程编程,特别是在Web服务器内部运行时。

        3
  •  0
  •   0scar    16 年前

    我认为传统的做法是让服务器从父进程中分离出来,即“后台监控”它本身,而不是让启动服务器分离本身的脚本。检查您开始查看的服务器是否有守护程序选项。

    如果您自己用PHP编写了服务器,则需要分离它。看起来像这样:

    posix_setsid(); //Start a new session
    if(pcntl_fork()) {exit();} //Fork process and kill the old one
    

    我想这也适用于窗户。(未测试。)

    推荐文章