目標
我正在開發一個JSON端點,當用戶向它發送GET請求時,基本上從服務器端COM端口讀取數據到文件中(在服務器端)。來自服務器的響應必須是正確形成的JSON響應,其中包含內容轉儲到的文件的名稱。如果COM端口響應時間過長,則該文件將關閉,並且無論從COM端口讀取什麼內容,該文件仍然被視爲有效。仍然提供有效的回覆。如果由於阻止io而導致腳本超時,我該如何生成自定義響應?
問題當COM端口不再被供給數據時,它被阻塞,直到出腳本倍。這會導致錯誤,並且IIS在json端點上提供了一個通用錯誤頁面。這不是有效的json,但它也不包含com數據被轉儲到的文件的名稱。
詳細
- 我必須使用PHP直接IO擴展了串行COM端口接口。
- 這是阻塞IO,以及在Windows上,不支持異步IO(據我所看到的。)
- register_shutdown_function不保證而連接仍然是開放的客戶端執行它,所以我不能用這將打印一個有效的響應。
什麼決定了文件的名稱? PHP腳本是創建它還是已經存在? –
文件名是在服務器端生成的。 Php腳本創建新文件。嗯,我可以讓客戶選擇它。儘管如此,必須有一些方法來阻止io。嗯。 – Jeremy