Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 如何在Symfony中将会话变量设置为持续30分钟_Php_Symfony_Session - Fatal编程技术网

Php 如何在Symfony中将会话变量设置为持续30分钟

Php 如何在Symfony中将会话变量设置为持续30分钟,php,symfony,session,Php,Symfony,Session,因此,我在编辑操作中创建了一个会话变量,以防止每次编辑订单时都向指定的主管发送电子邮件 这似乎效果不错,但我希望它每半小时发送一次邮件,以减少用户在短时间内不断编辑邮件时发送的邮件量。我还想发送邮件,无论半小时,如果主管在编辑中更改 这就是我目前所拥有的 public function editAction($id) { $request = $this->getRequest(); $session = $request->getSession(); $o

因此,我在编辑操作中创建了一个会话变量,以防止每次编辑订单时都向指定的主管发送电子邮件

这似乎效果不错,但我希望它每半小时发送一次邮件,以减少用户在短时间内不断编辑邮件时发送的邮件量。我还想发送邮件,无论半小时,如果主管在编辑中更改

这就是我目前所拥有的

public function editAction($id)
{
    $request = $this->getRequest();
    $session = $request->getSession();

    $order = $em->getRepository('Order')->find($id);
    $sessionName = $order . 'MailerSession';

    //do some extra stuff...

    if ($editForm->isSubmitted() && $editForm->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($order);
        $em->flush();

        if (false === $session->has($sessionName)) {
            $this->get('bss.pmod.mailer')
                    ->sendApprovalEmailMessage($object, $object->getFirstApprover(), 'first.approval.template');
        }

        $sessionData = array('order' => $order, 'supervisorId' => $order->getFirstApprover(), 'time' => new \DateTime(date('Y-m-d H:i:s')));
        $session->set($sessionName, $sessionData);

        return $this->redirectToRoute('show', array('id' => $order->getId()));
    }
}
在同一个会话中不再发送邮件,这似乎起到了作用。(请毫不犹豫地提及该部分是否仍有问题。)

但是我已经在sessionData中添加了supervisorId和current dateTime,但是我如何使用它来防止电子邮件在编辑后的半小时内发送给同一位主管,并且即使在半小时内仍然向新指派的主管发送电子邮件

我现在还不太明白。我是一名学生,现在正在学习Symfony和php大约4个月,这是我第一次需要实现会话


有什么帮助吗?

您应该在发送电子邮件时存储主管id和时间,然后检查是否需要半小时或更长时间才能允许再次发送。我明白了,但如何做到?我怎么比较呢?我的课程安排好了吗?我能看看例子吗?如果你的会话值是emailCreatedAt(当然在你发送它时设置),那么你应该能够使用这样一个简单的If语句,对吗?也许我把你的问题简单化了<代码>如果(time()>$session->get('emailCreatedAt')*60*30){我认为您应该使用cron而不是此算法。您应该在发送电子邮件时存储管理员id和时间,然后检查是否需要半小时或更长的时间才能允许再次发送。我知道了,但是如何比较?我的会话设置是否正确?我可以查看示例吗?如果您的会话值为emailCreatedAt(当然,在发送时设置它)那么你应该能够使用这样一个简单的if语句,对吗?也许我把你的问题简单化了。
if(time()>$session->get('emailCreatedAt')*60*30{
我认为你应该使用cron而不是这个算法