Тема: Загрузка ddd файла с помощью cURL
Добрый день!
Пробую с помощью curl отправить *.ddd файл в WialonLocal
кусок моего, кода
...
//подписываюсь на все события
//судя по док-ции можно и не подписываться
$response = $this->request('core/update_data_flags', array(
'spec' => array(
array(
'type' => 'type',
'data' => 'avl_resource',
'flags' => 0x3FFFFFFFFFFFFFFF,
'mode' => 0
)
)
));
$eventHash = 'uploadDDDFile'.rand(); // генерирую хэш события
$queryParams = array(
'svc' => 'resource/upload_tacho_file',
$this->sid_param => $this->_sid,
);
// собственно отправка файла
$ch = curl_init($this->url_api.'?'.http_build_query($queryParams));
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HEADER => 0,
CURLOPT_POST => 1,
//CURLOPT_VERBOSE => 1,
CURLOPT_POSTFIELDS => array(
'params' => json_encode(
array(
'outputFlag' => 1,
'eventHash' => $eventHash
)
),
'eventHash' => $eventHash,
'add-file-input' => new CurlFile($file)
)));
$raw = curl_exec($ch); // возвращается строка '{}'
$info = curl_getinfo($ch);
if($info['http_code'] === 200)
{
$this->_tm = time();
$data = json_decode($raw, true);
//print_r($data); //пустой массив
$timeout = strtotime('+30 seconds', time());
// смотрим события
while(time() < $timeout)
{
$events = $this->events(); // это метод обертка получения событий (http://{host}/avl_evts?sid=<text>)
if(!empty($events['events']))
{
foreach($events['events'] as $event)
{
print_r($event); // события приходят, но нет нужного - $eventHash
if(isset($event['d']['hash']) && $event['d']['hash'] == $eventHash)
{
print_r($event['d']['hash']); // сюда не приходим
}
}
usleep(200000);
}
}
}
...
Нужного события в цикле не получаю ($eventHash). Файл отправляется, проверял с помощью отправки на свой хост. Этот же файл понимает TahoManager (т.е. читает заголовки, я его не загружал полностью). Использую корневую учетку со всеми правами. Ошибок в ответе не приходит, приходит пустой объект - '{}' (также и в TahoManager). Что делаю не так?