日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP系统编程--01.多进程与多线程

發(fā)布時(shí)間:2025/4/16 php 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP系统编程--01.多进程与多线程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)程

  • 使用多進(jìn)程, 子進(jìn)程結(jié)束以后, 內(nèi)核會(huì)負(fù)責(zé)回收資源
  • 使用多進(jìn)程, 子進(jìn)程異常退出不會(huì)導(dǎo)致整個(gè)進(jìn)程Thread退出. 父進(jìn)程還有機(jī)會(huì)重建流程.
  • 一個(gè)常駐主進(jìn)程, 只負(fù)責(zé)任務(wù)分發(fā), 邏輯更清楚.
  • 多進(jìn)程方式更加穩(wěn)定,另外利用進(jìn)程間通信(IPC)也可以實(shí)現(xiàn)數(shù)據(jù)共享。
  • 共享內(nèi)存,這種方式和線程間讀寫變量是一樣的,需要加鎖,會(huì)有同步、死鎖問題。
  • 消息隊(duì)列,可以采用多個(gè)子進(jìn)程搶隊(duì)列模式,性能很好
  • 多線程

  • 線程是在同一個(gè)進(jìn)程內(nèi)的,可以共享內(nèi)存變量實(shí)現(xiàn)線程間通信
  • 線程比進(jìn)程更輕量級(jí),開很大量進(jìn)程會(huì)比線程消耗更多系統(tǒng)資源
  • 多線程也存在一些問題:

    • 線程讀寫變量存在同步問題,需要加鎖
    • 鎖的粒度過大存在性能問題,可能會(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.多进程与多线程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。