首页 > 解决方案 > Laravel - 如何通过发送短信来调整奇怪行为的问题

问题描述

我有一个非常特殊的问题,我不知道如何处理它。

我在 Laravel 中有网络应用程序,当我打开index页面时,我的手机会收到短信。问题是,有时我会收到 2 条消息或 3 条消息,有时会收到 1 条消息。是否有工具可以调试这种并不总是相同的奇怪行为?

关于我的代码的几句话:用户打开页面,因为它的第一次访问Session没有属性message_sent并被SendTextMessage::SendMessage($phoneNumber, $id_message, $smsCode, $newDateFormat);执行。之后Session已经message_sent并且不能再次发送,例如如果我刷新页面。

SendTextMessage::SendMessage()是 Laravel Helpers 中的类。

controller code

public function index($url_attribute, $id_message, Request $request)
{      
    if(!Session::has('message_sent'))
    {
        $user = User::where('id_message', $id_message)->first()->toArray();
        $phoneNumber = $user['mobile_phone'];
        $smsCode = $user['sms_code'];
        $newDateFormat = date("d.m.yy", strtotime($smsExpirationTime));

        $request->session()->flash('message', 'Text message sended.' );

        SendTextMessage::SendMessage($phoneNumber,$id_message, $smsCode, $newDateFormat);
        Session::put('message_sent', true);

    }

    return view('login');
    
}

SendTextMessage Class

class SendTextMessage 
{
    public static function SendMessage($phoneNumber, $id_message, $smsCode, $newDateFormat)
    {
        $sms = new Connect();
        $sms->Create("user","pass",Connect::AUTH_PLAIN);
        $sms->Send_SMS($phoneNumber,"Message");
        $sms->Logout();
    }
}

非常感谢任何提示或帮助。

更新:

问题仅在 Chrome 中。Edge 和 Internet Explorer 都很好。

标签: phplaraveldebugging

解决方案


由于此脚本在服务器端运行,因此浏览器应该不是问题。根据您提供的代码,这里没有明确的答案。

请尝试以下操作以调试您的问题:

  1. 在脚本的每个阶段记录消息,以便查看调用频率的部分。这将帮助您找到问题所在。你可以用它\Log::error("Message")来做到这一点。

  2. 一旦您知道问题可能出在哪里,请尝试将“决策”制定/任务关键变量也记录到 logile 中。例如\Log::error($session),这样您就可以理解为什么会发生该问题。一个原因可能是您配置了错误的会话缓存,或者您的 cookie 可能被弄乱了。在某些时候,可能有一段数据不是您期望的那样。


推荐阅读