Symfony 2 CronJob

时间:2014-12-10 13:31:14

标签: php symfony ssh cron

你好我在控制器中有一个功能:

if (!function_exists("ssh2_connect"))
die("function ssh2_connect doesn't exist");

if (!($con = ssh2_connect("myipadresherenotshowingtoyouguys", 22))) {
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username root, password secretpassword
if (!ssh2_auth_password($con, "blablabla", "blablabla!")) {
    echo "fail: unable to authenticate\n";
} else {
    // allright, we're in!
    echo "okay: logged in...\n";

    // execute a command
    $command = 'ssid "Wentzo test2" hide-ssid';
    if (!($stream = ssh2_exec($con, $command))) {
        echo "fail: unable to execute command\n";
    } else {

        $stream2 = ssh2_exec($con, $command_save);
        // collect returning data from command
        stream_set_blocking($stream, true);
        $data = "";
        while ($buf = fread($stream, 4096)) {
            $data .= $buf;
        }

        fclose($stream);
    }
}
}

我想在按下提交按钮时将此脚本作为cronjob运行。 但我不知道如何在symfony 2中做到这一点。

有人有解决方案吗? 例子可能是?

1 个答案:

答案 0 :(得分:2)

您正在寻找的概念是排队。

我建议你使用像Beanstalkd,RabbitMQ或任何其他排队系统来处理这个问题。

您的想法是将处理方法放入Symfony命令: http://symfony.com/doc/current/components/console/introduction.html#creating-a-basic-command

在该命令中,您将从队列中读取,并根据队列中的“作业”运行该过程。

在您的控制器中,您唯一要做的就是将新作业推入该队列。该作业将包含一些数据,您可以在命令中使用这些数据进行处理。

为了更多地理解这个概念,您可以浏览这些幻灯片:http://www.slideshare.net/cakper/2014-0821-symfony-uk-meetup-scaling-symfony2-apps-with-rabbit-mq

您可能想要了解更多关于排队的概念。

出于某种原因,我无法找到关于Symfony2和排队的好教程。