background image

力。进程的维护可以用很多操作系统级别的工具。Message Queue 解决了多大部分线程通信
问题。所以 PHP 多进程很适合做服务器端的计算密集型的应用。
据一家越南 IT 公司介绍,他们成功的把 PHP 后台多进程用在法律文件的分发、处理银行
账户的金额这样的企业级的应用上。
使用后台 PHP 进程可以不影响服务器同时处理网页的请求。这种后台进程一旦发生失败
很容易查处原因进行恢复或者补救,所以健壮性更高。不同的进程相互隔离,更加高效,
可以统一调度各个服务进程。
PHP 是目前应用最广泛的 Web 开发语言,所以用 PHP 来做服务器端的应用可以降低成本。
可以用现有人员、现有配置、甚至做到代码重用。什么样的场景更适合用 PHP 后台多进程
呢?比如邮件的分发、远程服务的调用、数据的聚合、计划任务、计算结果的缓存这些不需
要立即返回的地方。
PHP 单进程在某些地方完全可以达到目的,而且更加容易实现,不用考虑进程的同步问
题,不用考虑数据的共享问题。PHP CLI(SAPI SERVER API) 命令行接口可以用来做
CRON 计划任务, 

 

图形界面程序 (使用 GTK 库)。

PHP CLI 例子
php -f test.php  php -r “echo time();”  php -R as python style 
PHP 读取命令行参数:
___FCKpd___1
PHP 命令行接口标准输入输出:
___FCKpd___2
CRONJOB 可以定时运行某些任务,但要防止重复运行。开始时创建一个锁文件, 结束时
删除。或者用 ps 命令来处理。任务队列可以用 MySQL 来实现,或者 Key/VALUE 数据库,
或者消息队列来实现。
进程控制相关函数:
___FCKpd___3
PHP 不能对某些错误抛出异常,如何提高 PHP 多进程应用的容错性?
◆可以监控进程,依赖进程失败后报告。
◆用 CRONJOB 实现监控进程。
◆将被监控进程 PID 写成文件。
◆定时检查 PID

 

文件是否存在 检查 ps -o pid=或者 file_exists(‘/proc/’)。

◆如果线程不存在重启进程。
回顾以前用 Java 或者 Python 做的服务器端的服务都可以用 PHP 来实现。单一语言更容易
维护。以往人们对于 Web

 

语言的认识很片面,例如多线程、事 务这些东西都可以改变方式

来达到同样的目的。
原文链接:http://blog.eood.cn/server-side-php-progress-program-best-practice
SERVER["argv"][0].”\n”;  ?> 

PHP 命令行接口标准输入输出:

___FCKpd___2CRONJOB 可以定时运行某些任务,但要防止重复运行。开始时创建一个锁
文件, 结束时删除。或者用 ps 命令来处理。任务队列可以用 MySQL 来实现,或者
Key/VALUE 数据库,或者消息队列来实现。

进程控制相关函数: