PHP:无法使用@fopen打开流错误
我正在尝试将@fopen与PHP结合使用 在文件A中,我使用@fopen调用文件B,它应该从数据库查询向我发送一个json对象 此查询返回约190万行 如果在文件B中我停下来,例如1000000行,一切正常,并且我能够在文件A中接收到json对象,没有错误,但是如果我让查询返回190 000行,我会得到以下消息:PHP:无法使用@fopen打开流错误,php,sql-server,json,stream,fopen,Php,Sql Server,Json,Stream,Fopen,我正在尝试将@fopen与PHP结合使用 在文件A中,我使用@fopen调用文件B,它应该从数据库查询向我发送一个json对象 此查询返回约190万行 如果在文件B中我停下来,例如1000000行,一切正常,并且我能够在文件A中接收到json对象,没有错误,但是如果我让查询返回190 000行,我会得到以下消息:fopen(地址):无法打开流:HTTP请求失败!HTTP/1.1500内部服务器错误 你知道吗 事先谢谢你 事实上,你已经超越了数组的极限。你必须设定限制 比如:把你的记录分成两部分。
fopen(地址):无法打开流:HTTP请求失败!HTTP/1.1500内部服务器错误
你知道吗
事先谢谢你
事实上,你已经超越了数组的极限。你必须设定限制
比如:把你的记录分成两部分。它的意思是第一次
将创建新的txt文件,并在此和中写入10个缺少记录
第二次写入rest记录并从该文件中获取数据
好的,我找到了一个解决方案: 而不是通过fopen流发送数据, 我将json对象存储在文本文件中,当我收到从文件B到A的过程结束的确认时,我使用生成的文件,然后删除它们。 如果使用此方法,请小心,如果jour json对象太大,您将无法在文件中插入内容,您将不得不将其拆分为多个部分
多亏了@Monty和@Axiac,他们帮助探索了不同的方法。在托管
B
脚本的服务器上查看Apache的错误日志和PHP的错误日志。其中一项中列出了错误的原因。我敢打赌它说:“致命错误:允许的内存大小xxx
字节已用尽(试图分配yyy
字节)”。或者它可能是服务器脚本超时错误。检查apache和php日志。你可能会在那里找到答案。我真的不这么认为,因为如果我直接请求文件B,它就起作用了。只有通过使用文件A转到文件B,问题才会出现fopen@axiac,可能存在fopen上下文执行此操作的选项。我已经更改了“超时”,并且在文件A和文件B中,内存限制都设置为2048M,这应该足够了?500内部服务器错误
是远程服务器上的错误,很可能是B
脚本中止了fopen()
对b
脚本的运行方式几乎没有影响。您可以尝试获取浏览器发送的确切HTTP请求(使用浏览器的开发工具获取),并使用curl
而不是fopen()
在PHP中复制它。也许你也可以使用fopen()
复制它,创建一个流上下文,我不知道;我从来没有这样做过。你认为json数组不能包含1900000行吗?我没有测试它。但可能是这样,为什么不呢,我会试试看,但我读到了:上面说没有限制,我不同意这个答案。一切都有限制,这取决于浏览器、服务器、操作系统、内存和更多。我同意!)我在尝试你的解决办法很高兴听到这个。很乐意帮忙。