我使用Symfony2给了很多遗留代码,它运行在Linux上,但我需要在Windows上启动它。几乎所有东西都在工作(XAMPP),但我有一件事有问题 在用户注册期间,发送邮件花费的时间太长,无法加载确认页面(取决于选项可能会有几封电子邮件),因此对于每封电子邮件,都会在DB中添加一条记录,其中只包含一个命令,如{{1等等 然后是一个命令,它接收所有未发送电子邮件并逐个发送的命令。该命令以前称为:
"php /path/to/app/console product:send_some_mail address@host"
很明显,Windows上的路径并不是很正确,所以我试图让它更具普遍性。我将粘贴整个测试代码:
$proc = new Process('php /var/www/product/app/console product:send_all_mails ' . $mailAddress .' --env='. $env . ' ');
奇怪的是,我在伪日志文件中看到的一切是:
$proc = new Process('php ' . realpath($this->get('kernel')->getRootDir() . '/console') . ' product:send_all_mails ' . $mailAddress .' --env='. $env . ' ');
$proc->setEnhanceWindowsCompatibility(false); // this doesn't change anything...
$proc->start();
while($proc->isRunning()); // stupid debug
file_put_contents("MailProcessResult.txt", $proc->getCommandLine() . ' :: ' . $proc->getExitCodeText());
我不知道,发生了什么。我仔细检查了我能想到的一切:
php C:\gitrepos\product\app\console product:send_all_mails mymail@host.com --env=my_env :: General error
)之前我尝试运行该产品:send_all_mails as command,但它没有在后台运行。这很明显,php在执行php时遇到了一些问题:)
我还能尝试什么?我只需要在后台使用一个命令(或进程)运行一批具有不同参数的不同命令。
答案 0 :(得分:0)
将此命令更改为事件。
这样你就不需要Process() - 我相信这就是问题 - 太复杂(创建从系统调用命令的过程)。
将事件连接到doctrine到postPersist - 每次创建新记录时都会触发事件。
在事件检查中,是否向DB添加了fing是用户实体,如果是,则从事件
发送电子邮件