Portál AbcLinuxu, 6. května 2025 23:03

Dotaz: nacitani do php skriptu ze stdin fread

5.11.2010 12:18 Mirekh
nacitani do php skriptu ze stdin fread
Přečteno: 400×
Odpovědět | Admin
mam php skript, ktery se spousti pri prichodu emailu na danou adresu.

Cilem skriptu, je nacist zpravu (email), analyzovat ho a vykonat prislusnou akci.

Drive toto bezelo na debianu sarge s qmail a php4

Nedavno jsem to rozbehnul debianu 5 s postfixem/maildrop a php5 a uz se mi stalo,

ze se skript zachoval tak, jakoby nacetl cast emailu nebo nic

Nevim kde hledat problem, jestli v maildropu nebo v php

k nacitani mailu pouzivam toto
$fp=fopen('php://stdin', 'r');

  $a = fread($fp,10000);

  fclose($fp); 
myslite, ze pouziti stream_get_contents misto fread by pomohlo ?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.11.2010 19:08 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: nacitani do php skriptu ze stdin fread
Odpovědět | | Sbalit | Link | Blokovat | Admin

Buď to a nebo opakované načtení pomocí fread() v cyklu. V dokumentaci je na to výslovné upozornění a jsou tam i dva příklady, jak to řešit:

When reading from anything that is not a regular local file, such as streams returned when reading remote files or from popen() and fsockopen(), reading will stop after a packet is available. This means that you should collect the data together in chunks as shown in the examples below.
<?php
// For PHP 5 and up
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
<?php
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
  $contents .= fread($handle, 8192);
}
fclose($handle);
?>

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.