我正在使用Indeed Job Search API在我的Laravel网站上检索求职广告。 我创建了一个命令来填充数据库,并且一切在我的本地环境中都可以正常运行,但在生产环境中却无法正常运行。这些错误出现:
-当我测试Curl访问时:
无法连接到api.indeed.com端口80
-当我使用file_get_contents时:
file_get_contents(http://api.indeed.com/ads/apisearch?publisher=API_KEY&q=fruit+picking&co=au&v=2&latlong=1&fromage=5&limit=10&start=0&format=json&useragent=Mozilla/%2F4.0%28Firefox%29&userip=185.145.156.52):
无法打开流:连接被拒绝
我在Indeed网站上检查了API面板,但是我无法提供我的网站域,也不知道问题出在哪里。
这是我的代码:
public function handle() {
$json_string_o = 'http://api.indeed.com/ads/apisearch?publisher=PUBLISHER_API_KEY&q='.$request.'&co=au&v=2&latlong=1&fromage=5&limit=10&start=0&format=json&useragent=Mozilla/%2F4.0%28Firefox%29&userip=185.145.156.52';
$response = $this->curl_json ($json_string_o);
$json_data_o = json_decode($response, true);
}
public function curl_json ($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec ($ch);
if(curl_error($ch))
{
echo 'error:' . curl_error($ch);
} else {
echo $content;
}
curl_close ($ch);
return $content;
}
有没有有人使用Instant API遇到过这个问题?
非常感谢
答案 0 :(得分:4)
尝试添加一个用户代理,这有助于我在卷曲东西时为我解决该问题。
e.G:
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
curl_setopt($openCurl, CURLOPT_USERAGENT, $userAgent);
答案 1 :(得分:0)
我终于找到了与托管服务提供商有关的问题的解决方案。该答案适用于在OVH中托管其网站的用户。
如果尝试从Laravel命令调用API,它将在localhost中运行,但在生产环境中不起作用。实际上,OVH使用白名单进行外部连接以使用SSH命令。因此,有两种解决方案可用:
您可以在控制器中使用Curl来调用您的API并对结果做任何您想做的事情。您还需要定义使用浏览器访问控制器的路由。如果您在定义的地址打开浏览器,它将起作用。
卷曲命令
创建一个新命令,并使用curl函数插入代码以从外部源检索数据(以我为例)
在Console / Kernel.php中定义了命令
受保护的$ commands = ['App \ Console \ Commands \ YOURCOMMAND']; 受保护的功能时间表(时间表$ schedule) { $ schedule-> command('type:command_name')-> everyMinute(); }
$ _ SERVER ['argv'] = [ '工匠', 'schedule:run', ];
需要 DIR 。'/ artisan';
您可以在OVH中每小时最多运行一次cron任务,这就是为什么需要在调度功能中将频率定义为“ everyMinute”。
希望它将帮助在OVH中托管其网站的人