Laravel真的很新,我还在努力学习它,所以请在这里帮助我一点。有一个类从另一个站点提取数据。问题是它正在使用fopen但是在服务器安全性问题上这个功能是关闭的所以它必须使用curl。
const CACHE_KEY = 'rate';
public static function getRate() {
if (Cache::has(self::CACHE_KEY)) {
return Cache::get(self::CACHE_KEY);
}
$oneHourTimestamp = \Carbon\Carbon::now()->addHours(1);
$tenMinutesTimestamp = \Carbon\Carbon::now()->addMinutes(10);
$page = trim(file_get_contents('https://example.com/'));
$rates = json_decode($page, TRUE);
if (!$rates) {
Cache::put(self::CACHE_KEY, '-', $tenMinutesTimestamp);
return '-';
}
$Rate = @$rates['1']['2'];
if (!$Rate) {
Cache::put(self::CACHE_KEY, '-', $tenMinutesTimestamp);
return '-';
}
Cache::put(self::CACHE_KEY, $Rate, $oneHourTimestamp);
return $usdRate;
}
更新:
喜欢这个吗?
function get_curl_content($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
const CACHE_KEY = 'rate';
public static function getRate() {
if (Cache::has(self::CACHE_KEY)) {
return Cache::get(self::CACHE_KEY);
}
$oneHourTimestamp = \Carbon\Carbon::now()->addHours(1);
$tenMinutesTimestamp = \Carbon\Carbon::now()->addMinutes(10);
$result = $this->get_curl_content('https://example.com/');
$rates = json_decode($result, TRUE);
if (!$rates) {
Cache::put(self::CACHE_KEY, '-', $tenMinutesTimestamp);
return '-';
}
$Rate = @$rates['1']['2'];
if (!$Rate) {
Cache::put(self::CACHE_KEY, '-', $tenMinutesTimestamp);
return '-';
}
Cache::put(self::CACHE_KEY, $Rate, $oneHourTimestamp);
return $usdRate;
}
答案 0 :(得分:1)
要使用curl获取网页的contentos,您可以创建此功能并将其添加到您的班级:
function get_curl_content($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
你可以改变
$page = trim(file_get_contents('https://example.com/'));
有:
$page = $this->get_curl_content('https://example.com/');