本文目錄一覽:
如何提高PHP 擴展多線程phreads運行速度
1 進入php的安裝目錄
cd 到ext/mysql
/usr/local/bin/phpize
./configure –with-php-config=/usr/local/bin/php-config –with-mysql=/usr/local/mysql/
make
make install
在mysql/modules下看到了mysql.so
2 修改php.ini
添加extensions = “mysql.so”
3 將mysql.so拷貝到extension_dir目錄下,extension_dir在php.ini中設置
4重啟apache就可以了。
如何讓您的php也支持pthreads多線程
一、下載pthreads擴展
二、安裝pthreads擴展
複製php_pthreads.dll 到目錄 bin\php\ext\ 下面。
複製pthreadVC2.dll 到目錄 bin\php\ 下面。
複製pthreadVC2.dll 到目錄 C:\windows\system32 下面。
打開php配置文件php.ini。在後面加上extension=php_pthreads.dll
提示!Windows系統需要將 pthreadVC2.dll 所在路徑加入到 PATH 環境變量中。我的電腦—鼠標右鍵—屬性—高級—環境變量—系統變量—找到名稱為Path的—編輯—在變量值最後面加上pthreadVC2.dll的完整路徑
比如C:\WINDOWS\system32\pthreadVC2.dll
php中怎麼實現多線程
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();
?
北大青鳥設計培訓:PHP中的(偽)多線程與多進程?
利用WEB服務器本身的多線程來處理,從WEB服務器多次調用我們需要實現多線程的程序。
PHP中也能多線程了,那麼問題也來了,那就是同步的問題。
廈門電腦培訓知道PHP本身是不支持多線程的,所以更不會有什麼像Java中synchronize的方法了。
那我們該如何做呢?1.盡量不訪問同一個資源。
以避免衝突。
但是可以同時像數據庫操作。
因為數據庫是支持並發操作的。
所以在多線程的PHP中不要向同一個文件中寫入數據。
如果必須要寫的話,用別的方法進行同步。
如調用flock對文件進行加鎖等。
或建立臨時文件,並在另外的線程中等待這個文件的消失while(file_exits(‘xxx’));這樣就等於這個臨時文件存在時,表示其實線程正在操作。
如果沒有了這個文件,說明其它線程已經釋放了這個。
2.盡量不要從runThread在執行fputs後取這個socket中讀取數據。
因為要實現多線程,需要的用非阻塞模式。
即在像fgets這樣的函數時立即返回。
。
所以讀寫數據就會出問題。
如果使用阻塞模式的話,程序就不算是多線程了。
他要等上面的返回才執行下面的程序。
所以如果需要交換數據最後利用外面文件或數據中完成。
實在想要的話就用socket_set_nonblock($fp)來實現。
說了這麼多,倒底這個有沒有實際的意義呢?在什麼時候需要這種用這種方法呢?答案是肯定的。
大家知道。
在一個不斷讀取網絡資源的應用中,網絡的速度是瓶頸。
如果采多這種形式就可以同時以多個線程對不同的頁面進行讀取。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/270580.html