2010-04-25 58 views
1

即時通訊使用連接到我的PHP腳本中的服務器,用fsockopen()打開,我希望它在不同的頁面之間共享,所以我序列化它並將它保存在會話變量中,但似乎這是一個壞主意,因爲當我這樣做沒有發生...... 甚至沒有一個錯誤。 問題是,這種連接需要握手,所以我不能重新連接每次一種在多個頁面之間共享fsockopen()的返回值的方法?

另一個問題,什麼是fsockopen的超時或連接保持活着,如果。調用它的原始PHP腳本已關閉?

編輯︰// 我有一個腳本運行很長時間,所以它可能會保持打開,但我最初的問題,我可以通過$ _Session共享句柄,如果是的,我需要序列化它? ,因爲如果我回應處理它不是一個整數

回答

3

當你打開PHP腳本返回,進程「死亡」,你的套接字與它一起,你不能保存在會話數據。您可以從句柄保存整數值,但在下一頁加載並運行時將不再有效。

+0

你確定它是一個整數嗎? – Chilln 2010-04-25 11:11:43

+1

不,我只是想指出,當您創建頁面退出時,您在頁面之間保存的對象毫無意義。 對不起。 – 2010-04-25 11:17:39

2

fsockopen正在打開網絡套接字。

當打開該套接字的PHP腳本結束時,由其打開的套接字是丟失:您無法從其他腳本中重新使用它們。

如果您希望幾個不同的頁面使用該套接字,則除了爲每個腳本重新打開它之外,沒有其他方法,即使這需要時間。


另一個(複雜得多)解決方案可能是有:

運行的後臺程序,在後臺,並連接到遠程服務
    • 一個腳本,該腳本總是運行(或至少很長一段時間)
    • 其他腳本將信息發送到該守護程序,而不是嘗試連接到服務
    • 和守護進程,它總是連接,發送這些信息給它連接到

    這是一個比較複雜的遠程服務,就像我說的...但它應該工作得很好:-)

    請注意,使用守護進程以及所有可能需要訪問服務器命令行的所有內容:如果只運行,則無法執行(或不是那麼好)來自Apache的PHP。

  • 相關問題