Просмотр каталога и перенаправление на PHP - PullRequest
0 голосов
/ 11 февраля 2011

Привет,

Я смотрю каталог postfix с помощью iwatch.

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.

У кого-нибудь есть идеи?

Большое спасибо заранее,

1 Ответ

1 голос
/ 11 февраля 2011

file_get_contents () не возвращается, пока не будет прочитан весь файл / поток.В этом случае, это никогда.Предполагая, что iwatch продолжает работать, iwatch будет держать PHP STDIN открытым, поэтому file_get_contents () никогда не завершится.

Попробуйте stream_get_line () или fgets () .Это даст вам вывод iwatch построчно.

Edit : также, команда должна быть php -f <script>, а не php <script>.

...