我的專業術語可能會在這裏脫穎而出,與我一起裸露:多線程基於socket的服務器 - 可能在PHP?
我們有一堆用php編碼的cli cron樣式腳本。
其中一些服務使用ftp將數據發送到遠程位置。
東西都設置方式,什麼屢有發生的情況是:
a) Script start
b) Connect to ftp @ remote location
c) Send data
d) Close ftp connection
e) Terminate script
f) Return to A, repeat, within a short amount of time and send to the same target, but different data.
的問題是,有相當多的開銷(讀:減速)由於步驟b,其中首先得連接到FTP服務器,登錄,確保文件夾存在,如果沒有創建它等等等等......我知道我知道,正確的做事方式是將這些傳輸合併爲單個推送......但它的遠那更復雜一點。我從這裏簡化了大約30-40步。
所以我希望做是建立這樣一個系統:
[ CRON CLI SCRIPT ] --->
[ LOCALLY HOSTED SOCKET BASED SERVER THAT KEEPS THE FTP CONNECTIONS OPEN ] --->
[ REMOTE FTP ]
通過以上,我們可以保持本地託管基於套接字服務器上運行,而FTP連接開放,我們將跳過過程中最長的部分是什麼,ftp認證相關的項目。
雖然在PHP中設置「一次一個」風格的系統是相當平凡的,但我之前從未做過的事情是儘可能地使它接近多線程。
凡,插座被打開(例如,127.0.0.1:10000),以及多個請求可以來。如果需要的話,「孩子們都產生了,新的FTP連接製成,等等等等
任何人都可以透露一些見解,使這個多線程在PHP中,或者,如果有另一個更好的解決方案呢? Perl是一個選項。自從我觸及它以來,它已經有幾年了(年...),但我相信在一些好的文檔前幾天會讓我加快到足以讓它發生。
PHP不支持線程,但是[進程分叉](http://php.net/pcntl),這就是你所追求的。另請參閱套接字服務器的現有實現。 http://pear.php.net/package/Net_Server – mario
[PHP上的多個TCP套接字請求]的可能重複(http://stackoverflow.com/questions/5659443/multiple-tcp-socket-requests-on-php) – mario