2011-02-11 86 views
0

問候,看着一個目錄並重定向到PHP

我正在使用iwatch觀看postfix目錄。

iwatch /home/vmail/eamorr/photos/new/

當發送新郵件,IWATCH輸出線,如:

[11/Feb/2011 12:23:43] IN_CREATE /home/vmail/eamorr/photos/new//1297427022.Vca01I1e396M000383.eamorr 

如何重定向這對於處理的PHP程序?

這是我已經試過:

iwatch /home/vmail/eamorr/photos/new/ | php /home/hynese/sites/eamorr/emailPhotoHandler/handlePhotos.php

而這裏的handlePhotos.php文件:

<?php 
$data = file_get_contents("php://stdin"); 

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = $data; 
fwrite($fh, $stringData); 
fclose($fh); 

?> 

應該創建一個文件 「TESTFILE.TXT」,並把「[11/Feb/2011 12:23:43] IN_CREATE /home/vmail/eamorr/photos/new//1297427022.VCA01I1e396M000383.eamorr「進入它......但我得到的只是沒有 - 文件甚至沒有創建...

我認爲這與PHP中的管道和stdin有關。

任何人有任何想法?

提前許多感謝,

+0

「iwatch」輸出未流式傳輸到管道。 – 2011-02-11 12:52:53

回答

1

file_get_contents()函數不會返回,直到整個文件/流已讀。在這種情況下,這絕不是。假設iwatch繼續運行,iwatch將保持PHP的STDIN打開,所以file_get_contents()永遠不會結束。

嘗試stream_get_line()fgets()代替。這會給你一行一行的iwatch輸出。

編輯:此外,命令應該是php -f <script>,而不是php <script>