Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:无法使用@fopen打开流错误_Php_Sql Server_Json_Stream_Fopen - Fatal编程技术网

PHP:无法使用@fopen打开流错误

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与PHP结合使用

在文件A中,我使用@fopen调用文件B,它应该从数据库查询向我发送一个json对象

此查询返回约190万行

如果在文件B中我停下来,例如1000000行,一切正常,并且我能够在文件A中接收到json对象,没有错误,但是如果我让查询返回190 000行,我会得到以下消息:
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行吗?我没有测试它。但可能是这样,为什么不呢,我会试试看,但我读到了:上面说没有限制,我不同意这个答案。一切都有限制,这取决于浏览器、服务器、操作系统、内存和更多。我同意!)我在尝试你的解决办法很高兴听到这个。很乐意帮忙。