Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在后台的繁重任务_Php_Multithreading_Sockets_Pthreads - Fatal编程技术网

PHP在后台的繁重任务

PHP在后台的繁重任务,php,multithreading,sockets,pthreads,Php,Multithreading,Sockets,Pthreads,我正在构建一个脚本来生成数千个PDF页面,但是内存消耗会影响服务器的性能。由于这不是一项首要任务(这一代可能需要几个小时,只要它不影响Web服务器),那么解决这个问题的最佳方法是什么 我见过一些pthread的实现,但是我还必须安装ZTS 我真的不知道这是否是解决我问题的正确方法。 谢谢大家如果您想避免安装pcntl或pthread,只需将操作移动到cron作业(带有文件锁定以防止重复进程运行)或一个永无止境的服务来处理它们。当服务与主应用程序分开运行时,您的主应用程序将留下生成PD所需的元数据

我正在构建一个脚本来生成数千个PDF页面,但是内存消耗会影响服务器的性能。由于这不是一项首要任务(这一代可能需要几个小时,只要它不影响Web服务器),那么解决这个问题的最佳方法是什么

我见过一些pthread的实现,但是我还必须安装ZTS

我真的不知道这是否是解决我问题的正确方法。
谢谢大家如果您想避免安装pcntl或pthread,只需将操作移动到cron作业(带有文件锁定以防止重复进程运行)或一个永无止境的服务来处理它们。当服务与主应用程序分开运行时,您的主应用程序将留下生成PD所需的元数据,并且可以对其进行限制。

另一个选项是使用它,它允许您将PDF生成过程卸载到完全独立的服务器上(或一组服务器,gearmand本身实际上只是一个作业调度器)。工作脚本可以用许多不同的语言编写,包括PHP(因此,如果您已经在使用一些用PHP编写的PDF生成库,您仍然可以使用它)。另请参见

谢谢,但如果服务器是相同的,我是否仍可以管理内存消耗,使其不会影响web服务器?您可以将web服务器设置为同时作为作业服务器和工作服务器。作业服务器和工作服务器将在单独的进程中运行,但共享相同的硬件限制(您无法保证在长时间运行的内存密集型进程中web流量的峰值不会导致问题)。这就是为什么我的建议是强制将其卸载到单独的机器上。作为后续,您可以使用您可以访问的任何流程管理工具单独管理这些流程。是的,我可以将所需的元数据存储在数据库中,但通过这种方法,我如何管理资源消耗,从而不影响我们的主要业务b服务器?请记住,最初编写此服务或cron作业可能是为了连续处理pdf创建,一次一个。这将是可以使用的系统资源的最低数量,如果太多,您将不得不考虑让另一个节点来处理这些。我的感觉是,您甚至可能想要放大一点,一个让n个进程同时运行以创建它们。