Ho creato un processo utilizzando proc-open
ma sotto windows il stream-select non funziona. Quello che sto cercando di ottenere è di leggere sia lo stdout e stderr, mentre in aggiunta scrivendo a stdin e assicurarsi che l'output possa essere confrontato con gli input. C'è una soluzione alternativa per Windows per superare questa carenza?PHP proc_open su windows
risposta
Non sei molto dettagliato su ciò che non funziona per te con streaming-selezionare su Windows. Tuttavia, questo è un esempio funzionante su come utilizzare la selezione del flusso. Ho appena eseguito questo con successo con PHP 5.4 su Windows XP.
Edit: Uhhmmm .. Sembra come se fosse non funzionante dopo tutto ... Sry, testare ancora un po 'qui .. :)
Edit ancora:
Così, ho fatto qualche altro esperimento su questo, ma senza successo.
Forse dovresti lasciare che i processi parlino l'uno con l'altro TCP/UDP/IP?
Un altro modo di procedere (se si desidera ancora utilizzare stdout/stdin/stderr nel processo) potrebbe essere quello di utilizzare proc_open con i gestori di file, in modo che il processo stia scrivendo sui file, quindi utilizzare qualcosa di simile a unix 'inotify, caricare questa roba con la classe DOTNET PHP: Is there anything like inotify on Windows? per rilevare le modifiche ai file ...? Solo un'idea ...
O magari passare ad un sistema unix-like? ;) Ok, è tutto per me stasera. Buonanotte
'stream_select' nell'esame sembra inutile. Legge solo dalle pipe 'stdout' e' stderr' senza realmente esaminare cosa viene restituito in '$ read_streams'. Questo potrebbe bloccarsi se il processo figlio è occupato (o il bambino scrive in 'stderr' quando stai aspettando i dati su' stdout') – galymzhan
Sì, dopo alcuni test sembra che tu abbia ragione. Uhm ... –
@AlfredGodoy - Il problema è che windows 'select' non funziona. Ma unix/linux sembra funzionare. Ci scusiamo per lo sforzo per il codice che non funziona. –
- 1. PHP apre più volte proc_open
- 2. PHP proc_open problemi sulle finestre
- 3. "proc_open() è stato disabilitato per motivi di sicurezza" - PHP Errore
- 4. di PHP su Windows
- 5. Installazione PHP su windows
- 6. Nessun output da PHP interattivo su Windows
- 7. Come posso creare un'estensione PHP su Windows?
- 8. Installazione PHP PDO su Windows (xampp)
- 9. PHP non caricando php_pgsql.dll su Windows
- 10. Laravel 5.2 non funziona su php 7 su Windows 10
- 11. php-fpm per Windows?
- 12. Imagick php windows
- 13. php-apc per windows xampp
- 14. Come abilitare l'estensione PECL HTTP PHP su Windows?
- 15. Aggiornamento PHP su XAMPP 1.8.3 installazione di Windows 7
- 16. mcrypt non funziona in PHP 5.6 su windows/IIS
- 17. Modifica file di data di creazione su Windows con PHP
- 18. Apache mod_rewrite: direttiva RewriteMap con script PHP su macchina Windows
- 19. Scrivere su stdin da PHP?
- 20. symfony2.8 consiglia php accelerator installato su php
- 21. PHP Encrypt and Windows Decrypt
- 22. Utilizzo dell'autenticazione Windows con php?
- 23. PHP stdout su Apache
- 24. non è possibile installare XDEBUG su Windows?
- 25. Autenticazione LDAP su Windows Phone
- 26. Come arrestare il server mongodb su Windows?
- 27. PHP su Tomcat 8
- 28. Aiuto con il percorso windows - PHP
- 29. La pagina PHP viene visualizzata su ubuntu, non su Windows 7
- 30. Sviluppare Windows Phone 7 su Windows XP
Penso che l'unica cosa che puoi fare sia impostare i tuoi tubi in modalità non bloccante e controllarli manualmente, sfortunatamente. – netcoder
@netcoder - Ho provato questo. 'stream_set_blocking' restituisce false :-( –
stderr e stdout non possono essere impostati su non bloccanti Cosa stai cercando di ottenere esattamente? Alcuni codice? selezionare potrebbe non essere necessario qui. – Pierre