Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.1中发送电子邮件的性能问题_Php_Laravel 5_Laravel 5.1 - Fatal编程技术网

Php Laravel 5.1中发送电子邮件的性能问题

Php Laravel 5.1中发送电子邮件的性能问题,php,laravel-5,laravel-5.1,Php,Laravel 5,Laravel 5.1,我使用以下代码在Laravel 5.1中发送电子邮件 Mail::send('Project.Emails.Award', $data, function($message) { $message ->to('EmailAddress', 'EmailAddress') ->subject('hi'); }); 这里的问题是,上述功能需要至少5秒钟才能完成处理 问题:是否存在不需要等待响应的异步方法 赏金更新 有人可以为本

我使用以下代码在Laravel 5.1中发送电子邮件

Mail::send('Project.Emails.Award', $data, function($message) 
{
    $message
            ->to('EmailAddress', 'EmailAddress')
            ->subject('hi');
});
这里的问题是,上述功能需要至少5秒钟才能完成处理

问题:是否存在不需要等待响应的异步方法


赏金更新
有人可以为本地主机和GoDaddy上的排队设置提供分步指导原则?

根据您正在使用或必须使用的邮件驱动程序,可能还有其他选项来提高性能。然而,保持UI响应性的最有效方法是

对于您的代码,这将非常简单:

Mail::queue('Project.Emails.Award',$data,function($message)
{
$message
->收件人('EmailAddress','EmailAddress')
->主语(“hi”);
});

不过,您需要进行设置,但在某些托管服务器上无法正确执行此操作。

我应Helper的请求发布此消息,并演示一种API方法

因为他们想要的是免费使用的东西,这可能是最好的选择,因为你每个月可以免费收到10000封电子邮件,然后再为每封邮件支付少量费用

现在就集成到Mailgun中,所以开始就很容易了

首先,您只需注册一个Mailgun帐户并设置您的域:

  • 在Mailgun上设置您的域
  • 验证域并更新DNS记录以证明所有权并允许SPF和DKIM身份验证
  • 完成后,只需配置应用程序即可使用它。很好地介绍了Laravel上Mailgun的配置,但基本上您:

  • 如果您还没有Guzzle,请添加Guzzle(因为您正在通过API将电子邮件发送到Mailgun进行排队和发送)
    composer require“Guzzle http/Guzzle=~5.0”
  • 确保您的
    config/services.php
    文件与下面的配置匹配,这样我们就可以安全地保存详细信息,并将其存储在
    .env
    文件中
  • i、 e

  • 将必要的字段添加到我们的
    .env
    文件中,并用正确的值填充它们
  • e、 g

    一旦你设置好了,你就可以简单地使用
    Mail::send()
    命令像以前一样发送电子邮件-但是现在它将是即时的(取决于你的服务器-我的非常基本,可以立即发送电子邮件):


    您使用的是什么邮件驱动程序?您是否考虑过使用基于API的邮件提供程序?像曼德里尔或邮枪之类的东西。这意味着您不必等待消息发送,也不必担心在您的终端排队,而且它既便宜又免费。@James:您可以添加示例代码,以便在Laravel 5.2中使用它吗?我会接受的。@Helper你是在举一个使用电子邮件队列或使用基于api的电子邮件提供程序并以这种方式发送电子邮件的例子吗?我很乐意为api发送提供设置,但以前从未实际使用过电子邮件队列。我曾经查看过它,但最终选择使用基于api的提供程序,因为它可以节省我的排队时间,并让提供程序为我管理。无需使用
    Mail::queue
    。我正在寻找任何可以免费使用的东西。是否有其他100%免费使用的选项?
    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
      ],
    
    MAIL_DRIVER=mailgun
    MAIL_HOST=smtp.mailgun.org
    MAIL_PORT=587
    MAIL_USERNAME=XXX
    MAIL_PASSWORD=XXX
    MAIL_ENCRYPTION=tls
    MAILGUN_DOMAIN=THE-DOMAIN-SETUP-IN-MAILGUN
    MAILGUN_SECRET=THE-API-KEY-FOR-DOMAIN
    
    Mail::send('Project.Emails.Award', $data, function($message) 
    {
        $message
                ->to('EmailAddress', 'EmailAddress')
                ->subject('hi');
    });