[英]Do socket connections only need one thread?
看看phpDaemon 。 它設計用於長池應用程序和類似的。 但我建議你盡可能使用node.js來完成這些任務。
這是輪詢循環樣式服務器的一個示例 - 請參閱傳遞給socket_recv()
的MSG_DONTWAIT
常量? 從本質上講,它有一個循環遍歷所有打開套接字的線程,以查看它們中是否有任何數據等待。 如果套接字沒有數據等待,它將繼續移動到下一個並檢查它。
但是,請注意,使用這樣的服務器,您無法在TCP基礎之外獲得良好的協議處理 - 您必須擔心自己解析原始數據流。
所有連接都是通過套接字完成的。 主要區別在於I / O是否阻塞。 選擇從套接字接收阻塞將導致線程阻塞,但使用MSG_DONTWAIT
將立即完成。
Apache為您提供了一些選擇。 您可以分叉並發連接(mpm-prefork),為每個連接使用不同的線程(mpm-worker),或者使用非阻塞I / O(mpm-event)的線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.