PHP系统编程--01.多进程与多线程
PHP中提供了一個(gè)擴(kuò)展pcntl,可以利用操作系統(tǒng)的fork調(diào)用來實(shí)現(xiàn)多進(jìn)程。fork調(diào)用后執(zhí)行的代碼將是并行的。
PHP官方?jīng)]有提供多線程的擴(kuò)展,pecl中有一個(gè)pthreads擴(kuò)展提供了多線程的特性,地址是http://pecl.php.net/package/pthreads,此擴(kuò)展僅在線程安全版本中可用。
多進(jìn)程
多線程
多線程也存在一些問題:
- 線程讀寫變量存在同步問題,需要加鎖
- 鎖的粒度過大存在性能問題,可能會(huì)導(dǎo)致只有1個(gè)線程在運(yùn)行,其他線程都在等待鎖
- 同時(shí)使用多個(gè)鎖,邏輯復(fù)雜,一旦某個(gè)鎖沒被正確釋放,可能會(huì)發(fā)生線程死鎖
- 某個(gè)線程發(fā)生致命錯(cuò)誤會(huì)導(dǎo)致整個(gè)進(jìn)程崩潰
php搭建pcntl
在PHP中進(jìn)程控制支持默認(rèn)是關(guān)閉的。您需要使用 –enable-pcntl 配置選項(xiàng)重新編譯PHP來打開進(jìn)程控制支持。注:pcntl只支持Linux版本
##本例用的php版本的是5.3.3, cd php-5.3.3/ext/pcntl phpize ./configure --with-php-config=/usr/local/bin/php-config make make isntall在php.ini下加入pcntl.so即可
extension=pcntl.so
代碼演示
現(xiàn)在我們通過 pcntl擴(kuò)展來調(diào)用操作系統(tǒng)的fork實(shí)現(xiàn)多進(jìn)程。fork調(diào)用后執(zhí)行的代碼將是并行的。
<?php $pid = pcntl_fork(); if($pid > 0){echo "parent\n"; }elseif($pid == 0){echo "child\n"; }else{echo "error\n"; }參考地址:
http://php.net/manual/zh/book.pcntl.php
http://www.laruence.com/2009/06/11/930.html
來自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/linzhenjie/p/5485419.html
總結(jié)
以上是生活随笔為你收集整理的PHP系统编程--01.多进程与多线程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不要去追一匹马,用追马的时间种草
- 下一篇: http://www.openwebx.