国产探花免费观看_亚洲丰满少妇自慰呻吟_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進程也是不可用的


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 神农架林区| 南安市| 凌云县| 张家港市| 合作市| 洪泽县| 东阿县| 西乡县| 石门县| 宣武区| 巴楚县| 宁城县| 杨浦区| 汕尾市| 桃园县| 东海县| 成都市| 柳江县| 宁远县| 汝阳县| 玉环县| 福贡县| 丘北县| 康保县| 胶南市| 广宗县| 琼结县| 长治县| 五寨县| 六枝特区| 怀安县| 永年县| 保山市| 石阡县| 老河口市| 大丰市| 永昌县| 靖宇县| 旺苍县| 陵水| 丰台区|