亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有什么方式可以保證PHP腳本運行的線程安全嗎?求指點

有什么方式可以保證PHP腳本運行的線程安全嗎?求指點

PHP
MMMHUHU 2023-04-17 17:13:57
PHP有沒有一個配置或者什么方式可以開啟線程安全的模式?做多個腳本運行的時候,都是用文件鎖的方式來控制并行的,有什么更好的方式讓多個PHP腳本通訊嗎?
查看完整描述

2 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

這么解釋問題吧:

1。單進程單線程:一個人在一個桌子上吃菜。
2。單進程多線程:多個人在同一個桌子上一起吃菜。
3。多進程單線程:多個人每個人在自己的桌子上吃菜。

多線程的問題是多個人同時吃一道菜的時候容易發生爭搶,例如兩個人同時夾一個菜,一個人剛伸出筷子,結果伸到的時候已經被夾走菜了。。。此時就必須等一個人夾一口之后,在還給另外一個人夾菜,也就是說資源共享就會發生沖突爭搶。

1。對于 Windows 系統來說,【開桌子】的開銷很大,因此 Windows 鼓勵大家在一個桌子上吃菜。因此 Windows 多線程學習重點是要大量面對資源爭搶與同步方面的問題。

2。對于 Linux 系統來說,【開桌子】的開銷很小,因此 Linux 鼓勵大家盡量每個人都開自己的桌子吃菜。這帶來新的問題是:坐在兩張不同的桌子上,說話不方便。因此,Linux 下的學習重點大家要學習進程間通訊的方法。

--
補充:有人對這個開桌子的開銷很有興趣。我把這個問題推廣說開一下。

開桌子的意思是指創建進程。開銷這里主要指的是時間開銷。
可以做個實驗:創建一個進程,在進程中往內存寫若干數據,然后讀出該數據,然后退出。此過程重復 1000 次,相當于創建/銷毀進程 1000 次。在我機器上的測試結果是:
UbuntuLinux:耗時 0.8 秒
Windows7:耗時 79.8 秒
兩者開銷大約相差一百倍。

這意味著,在 Windows 中,進程創建的開銷不容忽視。換句話說就是,Windows 編程中不建議你創建進程,如果你的程序架構需要大量創建進程,那么最好是切換到 Linux 系統。

大量創建進程的典型例子有兩個,一個是 gnu autotools 工具鏈,用于編譯很多開源代碼的,他們在 Windows 下編譯速度會很慢,因此軟件開發人員最好是避免使用 Windows。另一個是服務器,某些服務器框架依靠大量創建進程來干活,甚至是對每個用戶請求就創建一個進程,這些服務器在 Windows 下運行的效率就會很差。這"可能"也是放眼全世界范圍,Linux 服務器遠遠多于 Windows 服務器的原因。


查看完整回答
反對 回復 2023-04-20
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

重新編譯php時指定相關的參數就行了。
configure時加上--enable-maintainer-zts

查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 124 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號