2011-05-04 101 views
1

爲了更好地制定問題,我拋棄了舊問題。 我正在通過PHP使用twitter流API,如下面的腳本。 當我通過命令行運行它。腳本繼續運行,當我點擊ctrl + c腳本停止。 這真是太棒了,但我想在後臺運行它。當用戶創建新的搜索時,下面的腳本被激活並保持運行,直到信號被髮送給sop。就像cli版本,但在後臺。在後臺啓動/停止推特流

我該如何做到這一點?

好吧,這裏是一段代碼:

$opts = array(
    'http' => array(
     'method' => 'POST', 
     'content' => 'track=ipad' 
    ) 
); 

$context = stream_context_create($opts); 
$stream = fopen('http://[email protected]/1/statuses/filter.json','r', false, $context); 

while (!feof($stream)) { 
    if (!($line = stream_get_line($stream, 200000, "\n"))) { 
     continue; 
    } 

    $tweet = json_decode($line); 
    // mysql query 
} 

我運行它

+2

我認爲至少** **相關代碼的一部分可能會有所幫助! – Trufa 2011-05-04 18:08:51

+0

我剛剛更新了這個問題;) – frietkot 2011-05-04 19:47:45

+0

只是想讓你知道你在你發佈的代碼中泄露了你的twitter用戶名和密碼。在有人劫持它之前更好地更改它:) – ChrisR 2012-05-29 13:50:36

回答

0

這應該通過運行PHP腳本從命令行守護進程來解決,有是很多conisder壽的事情。

  • 什麼時候系統重新啓動?
  • 什麼時發生錯誤?
  • 內存管理呢?
  • 那監控呢?

一個好的開始是Jeroen Keppens的演示PHP in the dark他在多個php會議上做過。

0

你可能要考慮ajax或其他web瀏覽器的方法,如彗星或WebSockets的達到你想要什麼。

更新
所以,如果你想讓它在服務器端運行,你應該使用php's exec function類似:

exec("php-cli runForever.php"); 
+0

它與瀏覽器無關。它將在後臺運行在服務器端。當用戶退出瀏覽器時,仍然需要繼續。也許幾個月,也許幾年。 – frietkot 2011-05-04 19:52:33

+0

@frietkot查看更新 – Neal 2011-05-04 19:56:14

+0

感謝您的評論。但這樣我無法控制腳本的開始和停止。有什麼想法呢? – frietkot 2011-05-10 07:41:23