AJAX+;Symfony+;速递员

AJAX+;Symfony+;速递员,ajax,swiftmailer,Ajax,Swiftmailer,我有一个非常具体的问题,经过几个小时的搜索,我还没有找到解决方案 我的程序架构如下: $.ajax({ url: "/publisher/cmp2/", timeout: 10000, global: false, type: "POST", async: true,

我有一个非常具体的问题,经过几个小时的搜索,我还没有找到解决方案

我的程序架构如下:

$.ajax({                 
 url: "/publisher/cmp2/", 
 timeout: 10000, 
  global: false,
             type: "POST",                                                   
         async: true,  
 data: {

     name: $('#name').val(),
     email: $('#email').val(),
     webs: $('#webs').val(),

     },

});
 $from = "noreply@gmail.com";  
 $to = "d.kozevnikoff@gmail.com";
 $subject = "email request";

 $message = \Swift_Message::newInstance()
         ->setSubject($subject)
         ->setFrom($from)
         ->setTo($to)
         ->setContentType("text/html")
         ->setBody(
         $this->renderView(
                 'main/mailer.html.twig'
         )
 );


 $mailer = $this->get('mailer');
 $mailer->send($message);
  • 在前端,一个用户登录到他的帐户,并在twig中提交一个表单。我使用event.preventDefault()冻结表单提交

  • 表单的按钮调用$.ajax()函数,该函数进行如下ajax调用:

    $.ajax({                 
     url: "/publisher/cmp2/", 
     timeout: 10000, 
      global: false,
                 type: "POST",                                                   
             async: true,  
     data: {
    
         name: $('#name').val(),
         email: $('#email').val(),
         webs: $('#webs').val(),
    
         },
    
    });
    
     $from = "noreply@gmail.com";  
     $to = "d.kozevnikoff@gmail.com";
     $subject = "email request";
    
     $message = \Swift_Message::newInstance()
             ->setSubject($subject)
             ->setFrom($from)
             ->setTo($to)
             ->setContentType("text/html")
             ->setBody(
             $this->renderView(
                     'main/mailer.html.twig'
             )
     );
    
    
     $mailer = $this->get('mailer');
     $mailer->send($message);
    
  • 此数据通过Symfony控制器中名为“/publisher/cmp2/”的路由接收。 此路由处理数据并发送电子邮件,如下所示:

    $.ajax({                 
     url: "/publisher/cmp2/", 
     timeout: 10000, 
      global: false,
                 type: "POST",                                                   
             async: true,  
     data: {
    
         name: $('#name').val(),
         email: $('#email').val(),
         webs: $('#webs').val(),
    
         },
    
    });
    
     $from = "noreply@gmail.com";  
     $to = "d.kozevnikoff@gmail.com";
     $subject = "email request";
    
     $message = \Swift_Message::newInstance()
             ->setSubject($subject)
             ->setFrom($from)
             ->setTo($to)
             ->setContentType("text/html")
             ->setBody(
             $this->renderView(
                     'main/mailer.html.twig'
             )
     );
    
    
     $mailer = $this->get('mailer');
     $mailer->send($message);
    
  • AJAX调用可以正常工作,邮件发送时不会出现任何问题

    但是,如果提交表单,然后用户立即单击以转到网站上的其他页面,那么它确实会滞后。如果您不提交并单击其他位置,您将在大约0.3秒内加载新页面,但如果在后台发送电子邮件,则至少需要10秒


    关于我的问题的原因和解决方法,有什么建议吗?

    您在哪个web服务器上托管此问题?如果是Apache,它是否运行单线程?在服务下一个请求之前,它必须等待上一个请求解决。