Laravel调度程序在执行xml_decode()

时间:2016-12-19 23:31:44

标签: php laravel-5 xml-rpc

我正在使用Laravel 5.3,我在App \ Console \ Kernel.php中的schedule()函数下有这一行。

$schedule->call('App\Http\Controllers\Controller@fetchXmlRpcResult')->everyMinute();

该函数有点繁琐,但它的主要内容是:获取数据库中找到的最后一条记录的时间戳,创建一个新的XML-RPC请求,询问新的记录,其中start_date为“DB中最后找到的时间戳” ,解码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\Controller@fetchXmlRpcResult

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响应是否会将其丢弃?我尝试通过浏览器执行相同的功能(也就是将函数放在http://example.com/update下的route.php中)并且它工作得很好。

1 个答案:

答案 0 :(得分:0)

您应该尝试升级到最新版本的phpxmlrpc库。 它修复了一个错误,阻止它正确地用于使用curl进行使用basic / digest auth的调用。

然后,您可以删除尝试手动删除响应中的http标头以及响应的额外解析的行,并使用$response->value()