我在该领域有几个笔记本电脑,每天需要从我们的服务器获取信息。每个笔记本电脑有一个server2go安装(基本的Apache,PHP,MySQL的运行作为一个可执行文件)会启动本地网页。该网页调用一个URL使用下面的代码我们的服务器上:

$handle = fopen( $downloadURL , "rb");
$contents = stream_get_contents( $handle );
fclose( $handle );

在$ downloadURL取从我们的服务器上的MySQL数据库一吨的信息并返回结果作为输出到设备。我目前正在返回的结果作为自己的SQL语句(即 - 如果我查询数据库“选择的名字从名字”,我可能会返回到设备的文本字符串“INSERT INTO名集名=‘JOHN SMITH’”)。这需要从在线数据库中的信息,并准备返回终端在SQL语句插入到笔记本电脑的数据库。

我遇到的问题是,数据量太大。笔记本电脑网页不断从服务器检索信息时超时。我已经设置了PHP超时限制很高,但仍然会碰到的问题。谁能想到一个更好的方式来做到这一点?将stream_get_contents保持连接到服务器,如果我刷新较小的块中的数据的设备?

感谢您的任何输入。

有帮助吗?

解决方案

如果你只是发送了哪些数据,并生成在接收端的SQL?这会为你节省很多字节来传输的。

是对数据的更新增量?即自上次更新可你只需要发的变化?

如果你确实有送过来的数据的一大块,你可能想看看有什么方法来压缩或压缩,然后在另一边解压。 (未看怎么做,但我认为这是可以实现在PHP)

其他提示

编写编译从服务器上的数据库中的文本文件的脚本,并下载该文件。

您可能要考虑使用第三方文件同步服务,如Windows Live Sync或Dropbox的让所有的机器同步的最新文件。然后,只是每当文件被修改了文件加载了到数据库中的守护进程。这样一来,您就不必完全处理同步件。

您正在使用stream_get_contents(或者你甚至可以用file_get_contents,而不需要额外的行来open流),但如果你文字量是不是真的像大标题说,你填写你的记忆。

我的远程服务器,内存是有限的编写脚本的时候来到这个问题,这样是行不通的。我发现的解决方案是使用stream_copy_to_stream,而不是直接在磁盘上复制文件而不是到内存中。

下面是完整代码对于片的功能。

scroll top