首先先要給大家介紹PHP執行linux系統命令的幾個基本函數 我曾經很長一段時間都分不清下面幾個函數的具體用法區別 system函數 說明 執行外部程序並顯示輸出資料 語法 string system(string mand int [return_var]); 返回值: 字元串 詳細介紹 本函數就像是 C 語中的函數 system() 用來執行指令 並輸出結果 若是 return_var 參數存在 則執行 mand 之後的狀態會填入 return_var 中 同樣值得注意的是若需要處理用戶輸入的資料 而又要防止用戶耍花招破解系統 則可以使用 EscapeShellCmd() 若 PHP 以模塊式的執行 本函數會在每一行輸出後自動更新 Web 伺服器的輸出緩沖暫存區 若需要完整的返回字元串 且不想經過不必要的其它中間的輸出界面 可以使用 PassThru() 實例代碼
< ?php $last_line = system( ls $retval); echo Last line of the output: $last_line; echo <hr />Return value: $retval; ?>exec函數 說明 執行外部程序 語法 string exec(string mand string [array] int [return_var]); 返回值: 字元串 詳細介紹 本函數執行輸入 mand 的外部程序或外部指令 它的返回字元串只是外部程序執行後返回的最後一行 若需要完整的返回字元串 可以使用 PassThru() 這個函數 要是參數 array 存在 mand 會將 array 加到參數中執行 若不欲 array 被處理 可以在執行 exec() 之前呼叫 unset() 若是 return_var 跟 array 二個參數都存在 則執行 mand 之後的狀態會填入 return_var 中 值得注意的是若需要處理使用者輸入的資料 而又要防止使用者耍花招破解系統 則可以使用 EscapeShellCmd() 實例代碼
<?php echo exec( whoami ); ?> <? $fp = popen( "/bin/ls" "r" ); ?> lishixin/Article/program/PHP/201311/21017
Ⅱ 如何運行PHP程序
<?php echo "hello world"; ?> 保存為hello.php 並把該文件放入apache的根目錄裡面.
打開ie瀏覽器在地址框輸入http://localhost/hello.php
這就執行了。
ps:首先確定,apache服務是否開啟。再確認apache的根目錄。
Ⅲ 如何用php-fpm 執行php程序
第一步:確定php-fpm配置文件的路徑,執行:
ps -aux | grep php-fpm
圖中,我的是在 /soft/php7/etc/ 目錄,在這個目錄下有個php-fpm.d目錄,打開這個目錄後,找到www.conf文件,修改該文件里:
user = www
group = www
Ⅳ 簡述PHP頁面的執行過程
1. 我們從未手動開啟過PHP的相關進程,它是隨著Apache的啟動而運行的;
2. PHP通過mod_php5.so模塊和Apache相連(具體說來是SAPI,即伺服器應用程序編程介面);
3. PHP總共有三個模塊:內核、Zend引擎、以及擴展層;
4. PHP內核用來處理請求、文件流、錯誤處理等相關操作;
5. Zend引擎(ZE)用以將源文件轉換成機器語言,然後在虛擬機上運行它;
6. 擴展層是一組函數、類庫和流,PHP使用它們來執行一些特定的操作。比如,我們需要mysql擴展來連接MySQL資料庫;
7. 當ZE執行程序時可能會需要連接若干擴展,這時ZE將控制權交給擴展,等處理完特定任務後再返還;
8. 最後,ZE將程序運行結果返回給PHP內核,它再將結果傳送給SAPI層,最終輸出到瀏覽器上。
Ⅳ PHP程序怎麼運行
你好~!首先,我不清楚你說的在電腦上配置好php的環境是用的什麼軟體,我個人都是用iis6.0+php5.0+mysql
iis組件相信你裝過,在xp系統盤里有,或者網上下載,
php和mysql程序網上也有,直接下載exe文件安裝。
裝好後,將文件放到c盤下的inetpub/wwwroot
文件夾下,然後在iis里點瀏覽,就ok了。
Ⅵ 討論php程序執行是線程還是進程
進程
進程是什麼?進程是正在執行的程序;進程是正在計算機上執行的程序實例;進程是能分配給處理器並由處理器執行的實體。 進程一般會包括指令集和系統資源集,這里的指令集是指程序代碼,這里的系統資源集是指I/O、CPU、內存等。 綜合起來,我們也可以理解進程是具有一定獨立功能的程序在關於某個數據集合上的一次運行活動, 進程是系統進行資源分配和調度的一個獨立單位。
在進程執行時,進程都可以被唯一的表示,由以下一些元素組成:
進程描述符:進程的唯一標識符,用來和其它進程區分。在Linux中叫進程ID,在系統調用fork期間生成,只是我們通過getpid返回的不是其pid欄位,而是其線程組號tgid。
進程狀態:我們常說的掛起、運行等狀態,其表示的是當前的狀態。
優先順序:進程間的執行調度相關,相對於其它進程而言。
程序計數器:程序中即將被執行的下一條指令的地址,該地址是內核術中或用戶內存空間中的內存地址。
內存指針:包括程序代碼和進程相關數據的指針,還有和其它進程共享內存塊的指針。
上下文數據:進程執行時處理器的寄存器的數據。
I/O狀態信息:包括顯式的I/O請求、分配給進程的I/O設備等
記賬信息:可能包括處理器時間總和、使用的時鍾數總和、時間限制等
以上的這些元素都會放在一個叫做進程式控制制塊的數據結構中。進程式控制制塊是操作系統能夠支持多進程和提供多處理的結構。 當操作系統做進程切換時,它會執行兩步操作,一是中斷當前處理器中的進程,二是執行下一個進程。 不管是中斷還是執行,進程式控制制塊中的程序計數器、上下文數據和進程狀態都會發生變化。 當進程中斷時,操作系統會把程序計數器和處理器寄存器(對應進程式控制制塊中的上下文數據)保存到進程式控制制塊中的相應位置, 進程狀態也會有所變化,可能進入阻塞狀態,也有可能進入就緒態。 當執行下一個進程時,操作系統按規則將下一個進程設置為運行態,並載入即將要執行進程的程序上下文數據和程序計數器等。
線程
進程有兩個特性部分:資源所有權和調度執行。 資源所有權是指進程包括了進程運行所需要的內存空間、I/O等資源。 調度執行是指進程執行過程中間的執行路徑,或者說程序的指令執行流。 這兩個特性部分是可以分開的,分開後,擁有資料所有權的通常稱為進程,擁有執行代碼的可分派部分的被稱之為線程或輕量級進程。
線程有「執行的線索」的意思在裡面,而進程在多線程環境中被定義為資源所有者,其還是會存儲進程的進程式控制制塊。 線程的結構與進程不同,每個線程包括:
線程狀態: 線程當前的狀態。
一個執行棧
私有的數據區: 用於每個線程局部變數的靜態存儲空間
寄存器集: 存儲處理器的一些狀態
每個進程都有一個進程式控制制塊和用戶地址空間,每個線程都有一個獨立的棧和獨立的控制塊,都有自己一個獨立執行上下文。
Ⅶ php程序怎麼長時間執行
PHP不能長時間執行的原因:
由於PHP主要用於網頁開發,為了避免長時間執行的網頁佔用太多的網路資源,PHP提供了限制PHP程序執行時間的方法,在php.ini 中的 max_execution_time 變數指定程序最大執行時間,默認是30秒,PHP程序執行超過這個時間後將被系統強制結束。
使PHP長時間執行的辦法:
如果你的PHP系統不是為了網站開發而安裝的,可以在PHP.INI文件裡面修改這個參數的值。如果只是個別程序希望執行較長的時間,不想修改整個系統的配置,或者沒有許可權修改系統配置,可以在PHP程序裡面適用本程序的參數值,語句示例:
//設置時間限制為2分鍾
set_time_limit(120);
//設置時間限制為0,允許無限期執行
set_time_limit(0);