我有一些代码如下:
$socket = stream_socket_client('tcp://my.domain.com:2082', $errno, $errstr, 1, STREAM_CLIENT_ASYNC_CONNECT);
fwrite($socket, "\xfe\x01");
$data = fread($socket, 1024);
此代码在HTML网页加载时执行,使用fread
的行只需一秒钟就可以看到:
1374008598.18 : Read begin
1374008599.75 : Read end
这会导致页面加载时间大幅增加,是否可以异步执行fread()
命令。考虑到PHP是一种服务器端语言,我不确定在这种情况下是否可行,如果没有,是否有另一种解决方案可以防止fread()
答案 0 :(得分:2)
改善这一点的唯一方法是尽早返回html,然后使用javascript对执行fread()
的另一个页面执行AJAX请求。您可以显示进度条直到操作完成。
顺便说一句,对于套接字,有socket_read()