将远程 JSON 结果写入本地文件
Posted
技术标签:
【中文标题】将远程 JSON 结果写入本地文件【英文标题】:Writing remote JSON result to local file 【发布时间】:2018-02-12 12:02:05 【问题描述】:我正在使用反向 whois API 来获取注册给特定人员的 JSON 域名数组。我想每 24 小时获取这个数组并将其保存到本地文件中(使用 cron)。如何将 API 中的结果保存到本地文件?
到目前为止,我有这个:
<?php
public function get_url($request_url)
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $request_url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($curl_handle, CURLOPT_TIMEOUT, 0);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl_handle, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
$JsonResponse = curl_exec($curl_handle);
$http_code = curl_getinfo($curl_handle);
return($JsonResponse);
$file = 'cm.json';
file_put_contents($file, mixed get_url("http://api.whoxy.com/?key=apikey&reverse=whois&name=Value+Name"));
?>
我如何让它工作?我对 JSON 和 PHP 的了解有限,能给我一些提示吗?
【问题讨论】:
尝试删除mixed
,不知道那在做什么
刚刚注意到这一点:为什么你得到$http_code
,然后什么都不做?它不会破坏您的代码,但仍然如此。
甚至尝试完全摆脱 curl,并尝试使用 $json = file_get_contents($url);
KIKO,这是为了检查他是否收到了 HTTP 200 响应。不过他没有检查它
@delboy1978uk:我就是这么想的。这将是使用 PHP 的一个很好的论据:如果 API 发生变化,并且不再工作(这将会发生),例如,您可以给自己发送一封电子邮件警告。如果您使用纯 cron/curl,则必须检查日志。
【参考方案1】:
如果是cron,根本不需要使用PHP,只需使用shell命令中的curl即可:
curl --fail "http://api.whoxy.com/?key=apikey&reverse=whois&name=Value+Name" -o cm.json
【讨论】:
有趣,但这不安全吗?例如,如果响应不是 200 怎么办?如果 API 密钥更改了怎么办?等等 您可以使用--fail
标志来避免在非200代码上下载文件。
如果你想让它“安全”,你需要设置某种监控来确保cron作业已经成功运行并且文件已经更新。通常,如果 cronjob 失败,您会在系统上收到一条内部邮件消息。以上是关于将远程 JSON 结果写入本地文件的主要内容,如果未能解决你的问题,请参考以下文章
仅使用 Angular 7 将 json 数据写入本地 JSON 文件
如何将LINUX远程服务器的日志写入本地的文件里,求大神。。。。在线等