php-file_get_contents/fread连续输入流
对于我的项目,我必须从我的(php)网站与远程设备进行通信。我需要实现的命令之一发送一个连续的数据流,直到它接收到来自用户的更多输入 所以我的问题是,如果我使用php-file_get_contents/fread连续输入流,php,http,Php,Http,对于我的项目,我必须从我的(php)网站与远程设备进行通信。我需要实现的命令之一发送一个连续的数据流,直到它接收到来自用户的更多输入 所以我的问题是,如果我使用file\u get\u contents(),这会是个问题吗?或者我应该使用fread()?我的输入是以字符串的形式进行的,fread()表示我应该使用文件\u get\u contents(),但是如果我使用文件\u get\u contents()我是否需要将其放入一个循环中,然后在数据包之间向我的设备发送数据,以阻止它发送数据?每
file\u get\u contents()
,这会是个问题吗?或者我应该使用fread()
?我的输入是以字符串的形式进行的,fread()
表示我应该使用文件\u get\u contents()
,但是如果我使用文件\u get\u contents()
我是否需要将其放入一个循环中,然后在数据包之间向我的设备发送数据,以阻止它发送数据?每次我调用file\u get\u contents()
时,是否会有一个循环关闭我的连接并打开一个新的连接
我每天可以使用的数据量也受到限制,如果我使用
file\u get\u contents()
,它将块大小限制为8KB,即我当天数据的8%。使用fsockopen
,fread
,等等。。。file\u get\u contents
的目的是读取文件,而不是以您想要的方式发送/接收数据。我会使用fopen
和流式上下文创建
$options = array(
'http' => array(
'method' => 'GET',
),
);
$context = stream_create_context($options);
$fh = fopen($your_url, 'r', false, $context);
这将允许您将流作为文件使用。让你可以使用任何你想用它做的东西。。。比如用
fgets
或其他什么工具逐行解析它。无论如何,我现在必须使用stream\u create\u context()
来处理文件内容。只是想澄清一下fopen的流是否位于后台(可能在它自己的线程上?)在我将数据从缓冲区中取出之前收集数据?至于线程,我不确定。你可以查一下来源,看看。数据收集在缓冲区中,等待您读取。我从未检查过让东西在缓冲区中累积是否会影响脚本使用的内存,主要是因为我必须有一些强有力的保证,确保处理数据的速度比数据流中的速度更快。