我已經使用proc-open
創建了一個進程,但在windows下stream-select不起作用。我試圖實現的是從stdout和stderr中讀取,同時另外寫入stdin並確保輸出可以與輸入匹配。有沒有解決方法來解決這個問題?窗口上的PHP proc_open
回答
對於在Windows上使用流選擇無法正常工作的問題,您不是很詳細。但是,這是如何使用流選擇的一個工作示例。我在Windows XP上使用PHP 5.4成功執行了此操作。
編輯: Uhhmmm ..好像是不工作的再次
編輯畢竟... Sry基因,測試一些更在這裏.. :):所以
,我做一些更多的嘗試,但沒有成功。
也許你應該讓進程對對方講TCP/UDP/IP?另一種前進的方式(如果你仍然想在你的進程中使用stdout/stdin/stderr)可能是使用proc_open和文件處理程序,所以你的進程正在寫入文件,然後使用類似於unix的東西'inotify,加載這個東西與PHP DOTNET類:Is there anything like inotify on Windows?檢測文件的變化......?只是一個想法...
或者也許更改爲unix樣os? ;)好吧,今晚就是這樣。晚安
'stream_select'在你的考試中人們似乎毫無用處。它只是從'stdout'和'stderr'管道中讀取,而沒有真正查看'$ read_streams'中返回的內容。這可能會阻止子進程忙(或者當你在等待stdout數據時,孩子寫入'stderr') – galymzhan 2012-04-06 14:09:33
是的,經過一些測試,你似乎是對的。呃... – 2012-04-06 15:28:21
@AlfredGodoy - 問題是windows'select'不起作用。但似乎工作的Unix/Linux。對不起,代碼不起作用的努力。 – 2012-04-06 16:30:33
- 1. PHP Socket和proc_open
- 2. PHP proc_open在Windows
- 3. proc_open在php
- 4. 確保proc_open將使命令行窗口保持活動狀態PHP
- 5. php - proc_open(或其他功能)
- 6. PHP proc_open多次打開
- 7. 檢查運行在窗口上的php
- 8. 在窗口和塊上的PHP
- 9. Proc_open()C++/python
- 10. 帶有超時值的PHP proc_open()
- 11. proc_open for php的命令歷史記錄
- 12. 在其他窗口之上的窗口
- 13. proc_open交互
- 14. 在窗口上安裝php ffmpeg
- 15. PHP在窗口上命名管道
- 16. php imageMagick在窗口
- 17. 窗戶上的PHP exec打開cmd窗口
- 18. PHP中的彈出窗口?
- 19. 在PHP中使用proc_open函數
- 20. PHP proc_open管道異常(Win7/Apache2.2)
- 21. PHP proc_open將無法正常工作 - 給
- 22. 父窗口後面的打開的窗口JS或PHP
- 23. 將PHP窗體數據從子窗口傳遞到父窗口
- 24. 上調整窗口
- 25. 使用proc_open()加載.profile
- 26. 窗口上的「rails」命令
- 27. 窗口上的SQL聚合
- 28. 窗口上的python settings.py
- 29. 窗口上的TensorFlow設置
- 30. 彈出窗口上的EditText
我認爲你唯一能做的就是將你的管道設置爲非阻塞模式,並且不幸地手動檢查它們。 – netcoder 2012-03-28 14:17:56
@netcoder - 我試過了。 'stream_set_blocking'返回false :-( – 2012-03-28 14:21:56
stderr和stdout不能設置爲非阻塞 你想要達到什麼目的?有一些代碼?select可能在這裏沒有必要 – Pierre 2012-04-01 15:49:09