【问题标题】:controller action called twice on using curl使用 curl 调用两次控制器操作
【发布时间】:2017-08-17 18:23:03
【问题描述】:

我有一个奇怪的问题。 在 laravel 控制器操作中,我正在对同一服务器上的 API 发起 curl 调用,并且在 curl 调用完成后再次调用我的相同控制器函数(在其中发起 curl 调用)。

    $postdata = http_build_query($postvars);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://' . $hostname . ':8083/api/');
    curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
    $answer = curl_exec($curl);

控制器操作是一个发布操作,在该操作中,我将 curl 发布到同一服务器上的 API。

【问题讨论】:

    标签: php laravel curl


    【解决方案1】:

    这不是在控制器上调用方法的正确方法。 假设你有

    public function test(){
    
    }
    

    public function test2(){
    
    }
    

    你想从 test 中调用 test2 你可以这样做:

    public function test(){
       $this->test2();
    }
    

    【讨论】:

    • 对不起?我没有在我的问题中添加任何控制器功能。这个 curl 调用是在助手内部进行的
    • 你说Inside a laravel controller action I am initiating a curl call to an API on the same server and my same controller function。无论如何,如果你想调用控制器方法,最好不要使用 Curl。在您的 web.php 中注册命名路由并调用路由。
    • 感谢您的帮助,但我想我未能解释确切的场景,我有一个在表单帖子上调用的控制器操作 A,在该控制器操作中有一个辅助函数,它会生成一个 cURL调用 laravel 外部同一​​服务器上的 API(在不同的端口 8083 上运行),因此当启动此 cURL 调用时,我的相同控制器操作 A 会无缘无故地再次调用。希望我能够解释确切的情况。
    • @AsimShaikh 是的,我现在明白了。好吧,默认情况下不应该调用它,所以我猜你正在调用的函数的代码是不正确的。所以调查一下。也不要为此使用 curl (我的意思不是直接)。尝试使用 guzzle
    • 即使在使用 guzzle 后我也面临同样的问题 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多