Adat beolvasása STDIN-ről PHP-vel
Üdv!
Olyan kérdésem lenne, hogy miképp' lehet rávenni az fread() függvényt, hogy STDIN-ről végig olvassa a file/stream-et (esetleg más függvény is jöhet)?
A gondom, hogy Freebsd alatt jól működő program linux-on nem akar működni.
A pontos működési menet az lenne, hogy egy program meghívja CLI-s php alkalmazást és a STDIN-ra küld szöveget.
BSD-ben ezt a php be is olvasta, de linux-on csak az első sorig hajlandó menni. (A max byte nem lehet gond)
ue. az alkalmazásnak argv.-ként megadva a lemenetett szöveget sikerül végig olvasnia, de STDIN-putról már nem.
Gondolom "ludas" a program is, ami átadja (ua. mint BSD-n), de nem lehet vhogy kikényszeríteni a php-t (fread()-et?), hogy tovább olvasson?
Gondoltam a sortörés CR-LF problémára, de nem tudom, azt hogy lehetne átállítani. Elvileg mind2 Unix, v. mi a szösz:-)
Így lenne beolvasva:És az $information csak 1 sort tartalmaz....
Köszönöm
■ Olyan kérdésem lenne, hogy miképp' lehet rávenni az fread() függvényt, hogy STDIN-ről végig olvassa a file/stream-et (esetleg más függvény is jöhet)?
A gondom, hogy Freebsd alatt jól működő program linux-on nem akar működni.
A pontos működési menet az lenne, hogy egy program meghívja CLI-s php alkalmazást és a STDIN-ra küld szöveget.
BSD-ben ezt a php be is olvasta, de linux-on csak az első sorig hajlandó menni. (A max byte nem lehet gond)
ue. az alkalmazásnak argv.-ként megadva a lemenetett szöveget sikerül végig olvasnia, de STDIN-putról már nem.
Gondolom "ludas" a program is, ami átadja (ua. mint BSD-n), de nem lehet vhogy kikényszeríteni a php-t (fread()-et?), hogy tovább olvasson?
Gondoltam a sortörés CR-LF problémára, de nem tudom, azt hogy lehetne átállítani. Elvileg mind2 Unix, v. mi a szösz:-)
Így lenne beolvasva:
<?php
$information = fread(STDIN, 3048576);
?>
Köszönöm
PHP != C++
A PHP jellegéből adódóan nem alkalmas STDINről való olvasásra, mert batch és legfőképpen webes nyelvnek készült. Szvsz írj egy C programot, ami leszedi az STDINről az adatot, lementi egy fájlba, amit a PHP program kiolvas.
Esetleg, ha ennél a megoldásnál maradsz, próbáld meg az fgets() fv-t.
A PHP doksiban találtam ezt a kódot:
$stdin = fopen('php://stdin', 'r');
Asszem 4.3.0-s php előtti verzióknál kell.
megvan:-)
Úgynéz ki így műxik.
Köszönöm a segítséget.
Ciklikusan olvasd be
A probléma pedig valószínűleg ez lesz:
(Nálam Linuxon így működik.)
fopen
"fopen() expects parameter 1 to be string"
4.es válasz a listában