为了账号安全,请及时绑定邮箱和手机立即绑定

MAMP 奇怪的行为:php 从 http:// 读取外部文件非常慢

MAMP 奇怪的行为:php 从 http:// 读取外部文件非常慢

PHP
至尊宝的传说 2023-10-15 15:34:39
我有一个简单的 PHP 脚本来逐行读取远程文件,然后对其进行 JSON 解码。在生产服务器上一切正常,但在我的本地计算机(MAMP 堆栈、OSX)上 PHP 挂起。它非常慢,需要 2 分钟以上才能生成 JSON 文件。我认为这是json_decode()冻结的。为什么只在 MAMP 上?我认为它陷入了while循环,因为我无法显示$str作为所有行结果的最终变量。如果您想知道为什么我需要逐行读取文件,那是因为在真实场景中,远程 JSON 文件是一个 40MB 的文本文件。我唯一好的表现结果就是这样,但是有什么好的建议吗?有没有配置php.ini可以帮助解决这个问题?// The path to the JSON File$fileName = 'http://www.xxxx.xxx/response-single.json';    //Open the file in "reading only" mode.$fileHandle = fopen($fileName, "r");    //If we failed to get a file handle, throw an Exception.if($fileHandle === false){    error_log("erro handle");    throw new Exception('Could not get file handle for: ' . $fileName);}   //While we haven't reach the end of the file.$str = "";while(!feof($fileHandle)) {           //Read the current line in.    $line = fgets($fileHandle);    $str .= $line;}    //Finally, close the file handle.fclose($fileHandle);   $json = json_decode($str, true); // decode the JSON into an associative array谢谢你的时间。
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我找到了原因。它是路径协议。

$filename = 'http://www.yyy/response.json';

它会使服务器冻结 1 到 2 分钟。我将文件更改为使用https协议的另一台服务器,并使用

$filename = 'https://www.yyy/response.json';

它有效。


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信