服务器端PHP多进程编程实战_PHP
最近比较PHP跟Python, Erlang的特性,发现PHP有很多人们不常用到的特性。用PHP CLI可以实现很多不错的应用。比如做搜索引擎的爬虫, 长期运行的计算脚本, 完全可以取代其他语言来做服务器的运维。这对于熟悉PHP的人来说如虎添翼。
bitsCN推荐阅读:让PHP开发者事半功倍的十大技巧
为什么PHP多进程很好? 网游服务器大部分都使用多线程而不是多进程的原因也在于进程比线程更加稳定。而且多线程适合现在多核服务器的应用场景,更能发挥多核运算的能力。进程的维护可以用很多操作系统级别的工具。Message Queue解决了多大部分线程通信问题。所以PHP多进程很适合做服务器端的计算密集型的应用。
据一家越南IT公司介绍,他们成功的把PHP后台多进程用在法律文件的分发、处理银行账户的金额这样的企业级的应用上。
使用后台PHP进程可以不影响服务器同时处理网页的请求。这种后台进程一旦发生失败很容易查处原因进行恢复或者补救,所以健壮性更高。不同的进程相互隔离,更加高效,可以统一调度各个服务进程。
PHP是目前应用最广泛的Web开发语言,所以用PHP来做服务器端的应用可以降低成本。可以用现有人员、现有配置、甚至做到代码重用。什么样的场景更适合用PHP后台多进程呢?比如邮件的分发、远程服务的调用、数据的聚合、计划任务、计算结果的缓存这些不需要立即返回的地方。
PHP单进程在某些地方完全可以达到目的,而且更加容易实现,不用考虑进程的同步问题,不用考虑数据的共享问题。PHP CLI(SAPI SERVER API) 命令行接口可以用来做CRON计划任务, 图形界面程序 (使用GTK库)。
PHP CLI例子
<ol class="dp-xml"> <li class="alt"><span><span>php -f test.php </span></span></li> <li><span>php -r “echo time();” </span></li> <li class="alt"><span>php -R as python style </span></li> </ol>
PHP读取命令行参数:
- php
- #!/usr/bin/php -q
- echo “Test Arguments:\n”;
- echo
最近比较PHP跟Python, Erlang的特性,发现PHP有很多人们不常用到的特性。用PHP CLI可以实现很多不错的应用。比如做搜索引擎的爬虫, 长期运行的计算脚本, 完全可以取代其他语言来做服务器的运维。这对于熟悉PHP的人来说如虎添翼。
bitsCN推荐阅读:让PHP开发者事半功倍的十大技巧
为什么PHP多进程很好? 网游服务器大部分都使用多线程而不是多进程的原因也在于进程比线程更加稳定。而且多线程适合现在多核服务器的应用场景,更能发挥多核运算的能力。进程的维护可以用很多操作系统级别的工具。Message Queue解决了多大部分线程通信问题。所以PHP多进程很适合做服务器端的计算密集型的应用。
据一家越南IT公司介绍,他们成功的把PHP后台多进程用在法律文件的分发、处理银行账户的金额这样的企业级的应用上。
使用后台PHP进程可以不影响服务器同时处理网页的请求。这种后台进程一旦发生失败很容易查处原因进行恢复或者补救,所以健壮性更高。不同的进程相互隔离,更加高效,可以统一调度各个服务进程。
PHP是目前应用最广泛的Web开发语言,所以用PHP来做服务器端的应用可以降低成本。可以用现有人员、现有配置、甚至做到代码重用。什么样的场景更适合用PHP后台多进程呢?比如邮件的分发、远程服务的调用、数据的聚合、计划任务、计算结果的缓存这些不需要立即返回的地方。
PHP单进程在某些地方完全可以达到目的,而且更加容易实现,不用考虑进程的同步问题,不用考虑数据的共享问题。PHP CLI(SAPI SERVER API) 命令行接口可以用来做CRON计划任务, 图形界面程序 (使用GTK库)。
PHP CLI例子
<ol class="dp-xml"> <li class="alt"><span><span>php -f test.php </span></span></li> <li><span>php -r “echo time();” </span></li> <li class="alt"><span>php -R as python style </span></li> </ol>登录后复制登录后复制PHP读取命令行参数:
___FCKpd___1登录后复制登录后复制PHP命令行接口标准输入输出:
<ol class="dp-xml"> <li class="alt"><span><strong><font color="#006699"><span class="tag"></span><span class="tag-name">php</span></font></strong><span> </span></span></li> <li><span>#!/usr/bin/php -q </span></li> <li class="alt"><span>/* Define STDIN in case if it is not already defined by PHP for some reason */ </span></li> <li><span>if(!defined(“STDIN”)) { </span></li> <li class="alt"><span>define(“STDIN”, fopen(‘php://stdin’,'r’)) </span></li> <li><span>} </span></li> <li class="alt"><span> </span></li> <li><span>echo “Hello! What is your name (enter below):\n”; </span></li> <li class="alt"> <span>$</span><span class="attribute"><font color="#ff0000">strName</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">fread</font></span><span>(STDIN, 80); // Read up to 80 characters or a newline </span> </li> <li><span>echo ‘Hello ‘ , $strName , “\n”; </span></li> <li class="alt"> <span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span> </li> </ol>登录后复制CRONJOB可以定时运行某些任务,但要防止重复运行。开始时创建一个锁文件, 结束时删除。或者用ps命令来处理。任务队列可以用MySQL来实现,或者Key/VALUE数据库,或者消息队列来实现。
进程控制相关函数:
<ol class="dp-xml"> <li class="alt"><span><span>Process Control Extensions </span></span></li> <li><span>pcntl_fork() </span></li> <li class="alt"><span>posix_setsid() </span></li> <li><span>posix_kill </span></li> <li class="alt"><span>pcntl_wait </span></li> <li><span>pcntl_signal </span></li> <li class="alt"><span> </span></li> <li><span>SIGHUP </span></li> <li class="alt"><span>SIGTERM; system shutdown, kill </span></li> <li><span>SIGINT; sent by Ctrl+c </span></li> <li class="alt"><span>SIGKILL (uncatchable); unresponsive, kill -9 </span></li> <li><span>SIGCHLD; child status change </span></li> <li class="alt"><span>SIGSTP; sent by Ctrl+z </span></li> <li><span>SIGCONT; resume from stop, fg </span></li> </ol>登录后复制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["argc"].”\n”;- echo
最近比较PHP跟Python, Erlang的特性,发现PHP有很多人们不常用到的特性。用PHP CLI可以实现很多不错的应用。比如做搜索引擎的爬虫, 长期运行的计算脚本, 完全可以取代其他语言来做服务器的运维。这对于熟悉PHP的人来说如虎添翼。
bitsCN推荐阅读:让PHP开发者事半功倍的十大技巧
为什么PHP多进程很好? 网游服务器大部分都使用多线程而不是多进程的原因也在于进程比线程更加稳定。而且多线程适合现在多核服务器的应用场景,更能发挥多核运算的能力。进程的维护可以用很多操作系统级别的工具。Message Queue解决了多大部分线程通信问题。所以PHP多进程很适合做服务器端的计算密集型的应用。
据一家越南IT公司介绍,他们成功的把PHP后台多进程用在法律文件的分发、处理银行账户的金额这样的企业级的应用上。
使用后台PHP进程可以不影响服务器同时处理网页的请求。这种后台进程一旦发生失败很容易查处原因进行恢复或者补救,所以健壮性更高。不同的进程相互隔离,更加高效,可以统一调度各个服务进程。
PHP是目前应用最广泛的Web开发语言,所以用PHP来做服务器端的应用可以降低成本。可以用现有人员、现有配置、甚至做到代码重用。什么样的场景更适合用PHP后台多进程呢?比如邮件的分发、远程服务的调用、数据的聚合、计划任务、计算结果的缓存这些不需要立即返回的地方。
PHP单进程在某些地方完全可以达到目的,而且更加容易实现,不用考虑进程的同步问题,不用考虑数据的共享问题。PHP CLI(SAPI SERVER API) 命令行接口可以用来做CRON计划任务, 图形界面程序 (使用GTK库)。
PHP CLI例子
<ol class="dp-xml"> <li class="alt"><span><span>php -f test.php </span></span></li> <li><span>php -r “echo time();” </span></li> <li class="alt"><span>php -R as python style </span></li> </ol>登录后复制登录后复制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___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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

Python通过其易学性和强大功能,是初学者的理想编程入门语言。其基础包括:变量:用于存储数据(数字、字符串、列表等)。数据类型:定义变量中数据的类型(整数、浮点数等)。运算符:用于数学运算和比较。控制流:控制代码执行流(条件语句、循环)。

Python 使初学者能够解决问题。其用户友好的语法、广泛的库以及变量、条件语句和循环等功能可实现高效的代码开发。从管理数据到控制程序流程和执行重复任务,Python 提供了

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

C是一种初学者学习系统编程的理想选择,它包含以下组件:头文件、函数和主函数。一个简单的C程序可以打印“HelloWorld”,需要包含标准输入/输出函数声明的头文件,并在主函数中使用printf函数来打印。通过使用GCC编译器可以编译和运行C程序。掌握基础后,可以继续学习数据类型、函数、数组和文件处理等主题,以成为熟练的C程序员。
