2016-12-19 2 views
0

Я использую Laravel 5.3, и у меня есть эта строка под функцией sched() в App \ Console \ Kernel.php.Ошибка при планировании планировщика Laravel при выполнении xml_decode()

$schedule->call('App\Http\Controllers\[email protected]')->everyMinute(); 

функция является своим родом утомительной, но тэк его: получить метку времени последней записи, найденной в базе данных, создайте новый запрос XML-RPC с просьбой о новых записях с датой_начал из «последних найденной Отметки времени в БД », декодировать результат XML-RPC и вставить в БД.

public static function fetchXmlRpcResult($user, $password, $account_id, $date) 
    { 
     $client = new Client('https://example.com/xmlapi/'); 
       $client->setSSLVerifyPeer(false); 
       $client->setSSLVerifyHost(2); 
       $client->setCredentials($user, $password, CURLAUTH_DIGEST); 

       $parameters = [removed] 
       $request = new Request('getAccountData', $parameters); 

     $response = $client->send($request); 

     // removing the 401 HTTP Unauthorized header 
     $xml = (substr($response->raw_data, strpos($response->raw_data, "\r\n\r\n")+4)); 

     // removing the OK HTTP header 
     $xml2 = (substr($xml, strpos($xml, "\r\n\r\n")+4)); 

     $accountCDRs = xmlrpc_decode($xml2); 

     return $accountInfo; 
    } 

Когда я бегу php artisan schedule:run в консоли, я пробужден с этой ошибкой:

Running scheduled command: App\Http\Controllers\[email protected] 

XML-RPC: PhpXmlRpc\Helper\Http::parseResponseHeaders: HTTP error, got response: HTTP/1.1 401 Unauthorized 


    [Symfony\Component\Debug\Exception\FatalThrowableError] 
    Call to undefined function App\Helpers\xmlrpc_decode() 

Контроллер использует файл в App \ Helpers \ XmlHandler.php и в этом файле я использую следующие классы:

use PhpXmlRpc\Value; 
use PhpXmlRpc\Request; 
use PhpXmlRpc\Client; 

Может ли HTTP-ответ выбросить его? Я попробовал выполнить ту же функцию через браузер (ака, добавив функцию в route.php под http://example.com/update), и это сработало отлично.

+0

Я просто должен был установить php7.0-XMLRPC пакета (Ubuntu) и включить его в php.ini PHP CLI. – Spacemudd

ответ

0

Вы должны попробовать перейти на самую последнюю версию библиотеки phpxmlrpc. Он исправил ошибку, которая предотвратила ее правильное использование для совершения вызовов, которые используют базовый/дайджест с использованием curl.

Затем можно удалить строки, где вы пытаетесь сделать вручную удаление HTTP заголовков от ответа и дополнительного разборе ответа, а просто использовать $response->value()