1

我想运行一个单独的 php 进程,在我的服务器中,进程分别运行,但是当这个测试运行时,站点的所有其余部分都不起作用,即整个站点都在等待他完成。

当我使用:

    忽略用户中止(真);
    设置时间限制(0);

    而(真)
    {
        睡眠(10);
    }

上面的代码完美运行,但是当我包含注册表、控制器和数据库驱动程序时,站点的其余部分仍在等待

例如:

    忽略用户中止(真);
    设置时间限制(0);

    //注册表、控制器、数据库等

    而(真)
    {
        //代码[...]
        睡眠(10);
    }

4

1 回答 1

6

如果您使用会话,您应该阅读 php 的会话锁定模型,特别是参见session_write_close().

这里也可能存在网络服务器限制,只有这么多的工作进程或线程可用。有许多网络服务器和许多安装 php 的方法,但是,无论如何,如果您使用工作池,如果您执行诸如 sleep() 之类的操作或其他需要很长时间的操作,您将挂起网络服务器。

一般来说,您应该完全将长时间运行的脚本排除在您的网络服务器之外。编写一个单独的后台进程来做这些事情。

于 2013-06-30T19:58:21.410 回答