自从将我的应用程序上传到服务器后,我遇到了这个奇怪的问题。数据库非常小,应用程序本身一次只能由3个客户使用。
我通过SSH终端运行此代码:
mysql> show processlist;
现在我多次运行该代码并注意到这些流程大约以10开始,但现在它们已达到50个。
所以我联系了支持,他们声称这是一个代码问题,但奇怪的是,当我重启我的VPS时,问题总是得到解决(暂时)。
我只有一个预定的工作,我在一个循环中发送:
foreach ($telNumbers as $tel) {
$this->dispatch(new SendDepositSMSAlertJob($tel, $bank . ' - ' . $acNumber, $depositType, $depositAmount, $reportDate));
}
这是工作的代码:
<?php
namespace App\Jobs;
class SendDepositSMSAlertJob extends Job
{
private $to;
private $account;
private $type;
private $amount;
private $date;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($to, $account, $type, $amount, $date)
{
$this->to = $to;
$this->account = $account;
$this->type = $type;
$this->amount = $amount;
$this->date = $date;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// Settings
$url = "https://xxx.xxxx.com/xx/messages/send";
$from = "XX";
$message = urlencode($this->account." has been credited with a " . $this->type . " deposit of GHs " . $this->amount . " on " . $this->date);
$client_id = "xxxxxx";
$client_secret = "xxxxx";
$query_string = "?From=".$from."&To=".$this->to."&Content=".$message."&ClientId=".$client_id."&ClientSecret=".$client_secret."&RegisteredDelivery=true";
$response = @file_get_contents($url.$query_string);
}
}
我已经将我的cron设置为每1分钟执行一次artisan:schedule命令。正如您所看到的,上面的工作并没有真正进行任何数据库调用,所以我现在想知道为什么有太多的空闲进程以及为什么很容易达到连接限制。