Laravel-如何调整发送短信的奇怪行为的问题



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

我在Laravel有一个web应用程序,当我打开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都很好。

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

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

  1. 在脚本的每个阶段记录消息,以查看调用哪个部分的频率。这将帮助您找到问题所在。您可以使用Log::error("Message")来执行此操作。

  2. 一旦你知道问题可能在哪里,就试着登录";决策";制造/任务关键变量到logile。例如Log::error($session),以便您能够理解为什么会出现该问题。其中一个原因可能是您的会话缓存配置不正确,或者您的cookie可能会出错。在某个时刻,可能有一段数据不是你期望的那样

您可能应该尝试更改使用Laravel Session的方式。你表示它在某些浏览器上运行良好,这意味着你的服务器端代码到目前为止是正确的,但Chrome有一些问题……从那以后,如果你快速查看Laravel Session文档,你会发现Session可以存储在cookies中,我敢打赌这是你的实际设置(在.env文件中检查Session_DRIVER常量,或在config/Session.php文件中检查(。

如果是这样,为了确认这种基于cookie的会话设置是罪魁祸首,您可能需要更改会话配置,使其独立于浏览器:除了cookie之外的任何其他选项都可以工作,databasefile选项可能更容易设置……如果它工作,我强烈建议您继续使用这种无cookie设置,以确保代码浏览器的安全。

最新更新