国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

SWOOLE編程細節知識

2019-11-06 06:05:48
字體:
來源:轉載
供稿:網友

注意事項

不要在代碼中執行sleep以及其他睡眠函數,這樣會導致整個進程阻塞 exit/die是危險的,會導致worker進程退出 可通過register_shutdown_function來捕獲致命錯誤,在進程異常退出時做一些請求工作,具體參看/wiki/page/305.html php代碼中如果有異常拋出,必須在回調函數中進行try/catch捕獲異常,否則會導致工作進程退出 swoole不支持set_exception_handler,必須使用try/catch方式處理異常 Worker進程不得共用同一個Redis或MySQL等網絡服務客戶端,Redis/MySQL創建連接的相關代碼可以放到onWorkerStart回調函數中,具體參考/wiki/page/325.html

異步編程

異步程序要求代碼中不得包含任何同步阻塞操作 異步與同步代碼不能混用,一旦應用程序使用了任何同步阻塞的代碼,程序即退化為同步模式

類/函數重復定義

新手非常容易犯這個錯誤,由于swoole是常駐內存的,所以加載類/函數定義的文件后不會釋放。因此引入類/函數的php文件時必須要使用include_once或require_once,否會發生cannot redeclare function/class 的致命錯誤。

內存管理

PHP守護進程與普通Web程序的變量生命周期、內存管理方式完全不同。請參考 swoole_server內存管理 頁面。編寫swoole_server或其他常駐進程時需要特別注意。

進程隔離

進程隔離也是很多新手經常遇到的問題。修改了全局變量的值,為什么不生效,原因就是全局變量在不同的進程,內存空間是隔離的,所以無效。所以使用swoole開發Server程序需要了解進程隔離問題。

不同的進程中PHP變量不是共享,即使是全局變量,在A進程內修改了它的值,在B進程內是無效的 如果需要在不同的Worker進程內共享數據,可以用Redis、MySQL、文件、Swoole/Table、APCu、shmget等工具實現 不同進程的文件句柄是隔離的,所以在A進程創建的Socket連接或打開的文件,在B進程內是無效,即使是將它的fd發送到B進程也是不可用的


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康乐县| 通州市| 怀柔区| 福州市| 佛学| 修武县| 中西区| 锡林郭勒盟| 濉溪县| 巴东县| 津市市| 新密市| 上饶市| 临武县| 韶山市| 淮阳县| 华容县| 清徐县| 靖边县| 汕尾市| 杨浦区| 土默特右旗| 南宫市| 永新县| 色达县| 封丘县| 都安| 浏阳市| 吉安市| 蓝山县| 江永县| 岳阳县| 揭东县| 赤壁市| 台东县| 石林| 耿马| 泾阳县| 宜州市| 郧西县| 广东省|