Đây là mã mà tôi đang sử dụng:dữ liệu đọc từ fsockopen sử dụng fgets/fread treo
if (!($fp = fsockopen('ssl://imap.gmail.com', '993', $errno, $errstr, 15)))
echo "Could not connect to host";
$server_response = fread($fp, 256);
echo $server_response;
fwrite($fp, "C01 CAPABILITY"."\r\n");
while (!feof($fp)) {
echo fgets($fp, 256);
}
tôi nhận được câu trả lời đầu tiên:
OK Gimap ready for requests from xx.xx.xx.xx v3if9968808ibd.15
nhưng sau đó lần trang ra. Tôi đã tìm kiếm thông qua stream_set_blocking, stream_set_timeout, stream_select, fread, vv nhưng không thể làm cho nó hoạt động. Tôi cần phải đọc tất cả dữ liệu mà máy chủ gửi và sau đó tiếp tục với các lệnh khác (tôi sẽ truy xuất email bằng imap).
Cảm ơn
Bạn có chắc chắn câu trả lời duy nhất là 256 ký tự dài? Và bạn có chắc rằng ổ cắm có thể ghi được không? Có thể tập lệnh của bạn bị treo trên 'fwrite()' vì ổ cắm không thể ghi được ... – shadyyx
Có. Tôi đã thử nghiệm rằng bằng cách thay thế vòng lặp while bằng cách viết fgets đơn giản ($ fp, 256) hai lần. Và đây là phản hồi mà tôi nhận được: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST TRẺ EM X-GM-EXT-1 XYZZY SASL-IR AUTH = XOAUTH C01 OK –