尝试运行一个API,该API将为我提供更新的温度和湿度值,但是curl函数无法工作,因为它会给出NULL响应并引发错误。从终端运行以进行测试
代码:
class updateTempHumHourly extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'update:temphum';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Update temperature and humidity readings hourly';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$options = array(
'cluster' => 'ap2',
'useTLS' => true
);
$pusher = new \Pusher\Pusher(
'osdifnerwion4iownfowinf',
'dofhewofhewofnowenfid',
'7asdkland',
$options
);
$thinkers = t::where('user_id', '!=' , NULL)->where('thinker_status',1)->get();
foreach($thinkers as $t)
{
$temp = [
'action'=>'list_slave',
'mac'=> $t->thinker_MAC,
'type' => 'all',
'appkey' => 'nope'
];
json_encode($temp);
$response = Curl::to('http://103.31.82.46/open/open.php')
->withContentType('application/json')
->withData($temp)
->asJson(true)
->withHeader('Postman-Token: d5988618-676e-430c-808e-7e2f6cec88fc')
->withHeader('cache-control: no-cache')
->post();
foreach($response['slaves'] as $s)
{
if(array_key_exists("temp",$s) && array_key_exists("hum",$s))
{
$slave = sd::where("connected_thinker_MAC",$response['mac'])->where("device_id",$s['slave_id'])->first();
$slave->temperature = $s['temp'];
$slave->humidity = $s['hum'];
$slave->save();
$array = [];
$array['temperature'] = $s['temp'];
$array['humidity'] = $s['hum'];
$array['id'] = $s['slave_id'];
$pusher->trigger($t->user_id."-channel","s-event",$array);
\App\helper\log::instance()->tempHumLog($s);
}
}
}
}
}
foreach循环引发错误,即$ response等于null。 curl功能不能从这里开始工作,而是可以正常工作。救命。我需要每小时运行一次此任务,以获取平均温度和湿度。
答案 0 :(得分:0)
由于您说过代码可以在某个地方工作,这意味着服务器存在问题,而不是代码本身(因为这是CURL问题)。
在您的php.ini文件中,有以下行:extension=php_curl.dll
以启用curl。在您的服务器上取消注释它具有使卷曲起作用的任务。这应该可以解决您的问题。
在本地测试您提供给我们的api会返回500,但是如果您说它对您有用,那么我认为这只是一个示例,问题出在CURL本身。