日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

PHP中提供了一個(gè)擴(kuò)展pcntl,可以利用操作系統(tǒng)的fork調(diào)用來(lái)實(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)存,這種方式和線程間讀寫(xiě)變量是一樣的,需要加鎖,會(huì)有同步、死鎖問(wèn)題。
  • 消息隊(duì)列,可以采用多個(gè)子進(jìn)程搶隊(duì)列模式,性能很好
  • 多線程

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

    • 線程讀寫(xiě)變量存在同步問(wèn)題,需要加鎖
    • 鎖的粒度過(guò)大存在性能問(wèn)題,可能會(huì)導(dǎo)致只有1個(gè)線程在運(yùn)行,其他線程都在等待鎖
    • 同時(shí)使用多個(gè)鎖,邏輯復(fù)雜,一旦某個(gè)鎖沒(méi)被正確釋放,可能會(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來(lái)打開(kāi)進(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)在我們通過(guò) pcntl擴(kuò)展來(lái)調(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



    來(lái)自為知筆記(Wiz)

    轉(zhuǎn)載于:https://www.cnblogs.com/linzhenjie/p/5485419.html

    總結(jié)

    以上是生活随笔為你收集整理的PHP系统编程--01.多进程与多线程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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