nginx - php pthreads apache cannot load 問題(windows)

來源:互聯網
上載者:User
本機配置:
apache:2.2-x86
php:5.4 ts-x86
系統:windows 64

pthreads 配置
下載地址:http://windows.php.net/downloads/pecl/releases/pthreads/2.0.9/

pthreads 5.4 下兩個檔案:
php_pthreas.dll 和 pthreadVC2.dll

php_pthreas.dll 放入php ext檔案中
pthreadVC2.dll 放入php 根目錄

php.ini
extension=php_pthreads.dll

apache http.conf 配置
LoadFile "D:/wamp/php/pthreadVC2.dll"

然後重啟apache 無法啟動 cmd 進入apache/bin 命令 httpd -k start 報 cannot load pthreadVC2.dll

疑問:
是否是php版本要64位 apache 才能調用 pthreadVC2.dll?

測試代碼:

arg = $arg;  }  public function run(){    if($this->arg){      printf("Hello %s\n", $this->arg);    }  }}$thread = new AsyncOperation("World");if($thread->start())  $thread->join();?>

通過apache 不載入 pthreadVC2.dll ,直接能列印出 helloword

nginx:
運行測試代碼 毫無結果

提問:
php pthreads 多線程擴充 nginx 如何配置?

回複內容:

本機配置:
apache:2.2-x86
php:5.4 ts-x86
系統:windows 64

pthreads 配置
下載地址:http://windows.php.net/downloads/pecl/releases/pthreads/2.0.9/

pthreads 5.4 下兩個檔案:
php_pthreas.dll 和 pthreadVC2.dll

php_pthreas.dll 放入php ext檔案中
pthreadVC2.dll 放入php 根目錄

php.ini
extension=php_pthreads.dll

apache http.conf 配置
LoadFile "D:/wamp/php/pthreadVC2.dll"

然後重啟apache 無法啟動 cmd 進入apache/bin 命令 httpd -k start 報 cannot load pthreadVC2.dll

疑問:
是否是php版本要64位 apache 才能調用 pthreadVC2.dll?

測試代碼:

arg = $arg;  }  public function run(){    if($this->arg){      printf("Hello %s\n", $this->arg);    }  }}$thread = new AsyncOperation("World");if($thread->start())  $thread->join();?>

通過apache 不載入 pthreadVC2.dll ,直接能列印出 helloword

nginx:
運行測試代碼 毫無結果

提問:
php pthreads 多線程擴充 nginx 如何配置?

個人覺得pthreads這個擴充不適合應用在Apache/PHP-FPM這些Web服務上,因為這些服務本身就有自己的進程管理模型.在CLI下使用pthreads可能更好些.還有,需要注意的是,不要線上程裡使用echo輸出內容,否則會出現不可預知的錯誤和行為,比如亂碼(garbled).尤其是在非CLI環境下,比如Apache/PHP-FPM.另外,我在Ubuntu上用Nginx+PHP-FPM跑下面的多線程程式,是能正常啟動並執行:

'.str_repeat(' ', 1024*4);    ob_flush();    flush();}class Request extends Thread {    public $url;    public $data;    public function __construct($url) {        $this->url = $url;    }    public function run() {        // 線程處理一個耗時5秒的任務        for($i=0;$i<5;$i++) {            //不要線上程裡使用echo輸出內容            //echo '線程: '.date('H:i:s')."\n";            //do_flush();            //sleep(1);        }        $response = file_get_contents($this->url);        $response = $this->url;        if ($response) {            $this->data = array($response);        }        //echo "線程: 任務完成
"; }}$request = new Request('hello.html');// 運行線程:start()方法會觸發run()運行if ($request->start()) { // 主進程處理一個耗時10秒的任務,此時線程已經工作 for($i=0;$i<10;$i++) { echo '進程: '.date('H:i:s')."\n"; do_flush(); sleep(1); }}// 同步線程並輸出線程返回的資料$request->join();echo '線程返回資料: '.$request->data[0];ob_end_flush();

載入pthreads外掛程式必須要求php是 ZTS Enabled ( Thread Safety ) 版,請自行檢查相關版本

我將環境整體換了一下 apache2.4 php 5.6 ts-x64 threads 擴充 正常添加了

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.