當前位置:首頁 » 編程語言 » php是單線程還是多線程

php是單線程還是多線程

發布時間: 2023-03-06 17:14:18

php 到底是單進程還是多進程

一般都是多進程,由php-fpm或者fastcgi開啟並管理的。這個沒什麼意義。
你應該想問的是PHP是單線程還是多線程。
一般PHP是默認單線程的,不過可以用php插件來支持多線程模式。

㈡ php單線程訪問和多線程誰更快一些

php單線程訪問更快一些。線程切換是有開銷的,會導致程序運行變慢。單線程比多線程的運行速度更快。

㈢ php是單進程還是單線程啊

默認運行是單進程多線程的,線程用完就銷毀
可以開啟多進程,但這樣做意義不大

㈣ PHP支持多線程嗎

PHP語言本身是不支持多線程的。網上關於PHP模擬多線程的方法,都是利用了LINUX和APACHE等本身所具有的多線程能力。既然是模擬的,就不是真正的多線程,其實只是多進程。
1. 利用LINUX操作系統

<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(5);
}
?>

上面存成test.php, 然後寫一段SHELL代碼

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q test.php &
done

2. 利用fork子進程(其實同樣是利用LINUX操作系統)

<?php
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待進程結束
$intNum = 10; /// 進程總數
$pids = array(); /// 進程PID數組
echo ("Startn");
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();/// 產生子進程,而且從當前行之下開試運行代碼,而且不繼承父進程的數據信息
if(!$pids[$i]) {
// 子進程進程代碼段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str n";
exit();
// 子進程進程代碼段_End
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "n";
}
}
echo ("Endn");
?>

3. 利用WEB SERVER, PHP不支持多線程, APACHE可是支持的, 呵呵.

假設我們現在運行的是a.php這個文檔. 但是我在程式中又請求WEB伺服器運行另一個b.php

那麼這兩個文檔將是同時執行的.

<?php
function runThread()
{
$fp = fsockopen('localhost', 80, $errno, $errmsg);
fputs($fp, "GET /a.php?act=brnrn");
fclose($fp);
}
function a()
{
$fp = fopen('result_a.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
fclose($fp);
}
function b()
{
$fp = fopen('result_b.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
fclose($fp);
}
if(!isset($_GET['act'])) $_GET['act'] = 'a';
if($_GET['act'] == 'a')
{
runThread();
a();
}
else if($_GET['act'] == 'b') b();
?>

也可以把需要多線程處理的部分交給java去處理,然後在PHP里調用。

<?php
system('java multiThread.java');
?>

㈤ php的介紹及Php有什麼優勢

優點和缺點:

1:學習簡單,做為一種腳本語言,學習簡單是必須的!同樣的,作為一種腳本語言,效率問題,永遠是痛點,特別是復雜的運算

2:語法較隨意,同樣的,語法的隨意性,使得在閱讀沒有注釋的代碼時,無法很清楚的明白到底是什麼意思,比如Java,變數的類型是固定的,而php則前面可以是string,後面直接成array都沒關系

3:php本身不支持多線程(swoole除外)

4:php沒有直接操作內存的函數(至少本人不知道,6還沒研究,不知道有沒)

5:作為一種弱語言,php也算很好了,比之perl等也不錯

6: php可以說應用范圍很狹窄(個人理解,除了網頁之外,好像沒什麼其他用途了,如果內嵌在游戲中那麼python是不錯的選擇,cli也能湊合,),當然,我把php做的server-api這種模式也理解為是網頁!

熱點內容
如何製作土豆伺服器 發布:2024-11-07 05:27:49 瀏覽:811
機器碼反編譯教程 發布:2024-11-07 05:24:17 瀏覽:213
動遷三塊磚演算法 發布:2024-11-07 05:18:06 瀏覽:826
視窗壓縮 發布:2024-11-07 04:45:06 瀏覽:887
fc2點此訪問 發布:2024-11-07 04:45:04 瀏覽:760
上傳吊牌圖 發布:2024-11-07 04:38:48 瀏覽:919
密碼學什麼概念 發布:2024-11-07 04:38:48 瀏覽:848
linuxpdf轉word 發布:2024-11-07 04:37:06 瀏覽:213
安卓手機為什麼用ufs 發布:2024-11-07 04:15:09 瀏覽:559
資料庫刪除所有表 發布:2024-11-07 04:13:55 瀏覽:576