FOSElasticaBundle问题在cron作业中运行populate命令

时间:2014-02-28 22:33:54

标签: symfony elasticsearch crontab elastica foselasticabundle

我在Linux中构建了一个cron作业,每5分钟运行以下命令来更新我的弹性搜索索引

php app/console fos:elastica:populate --no-reset --no-debug

我有一个文件附件的嵌套对象映射,如下所示:

...
types:
   documents:
      mappings:
         Title: ~
         Description: ~
         Attachments:
            type: "object"
               properties:
                  File_Name:
                  content:
                     type: attachment 
      persistence:
         driver: orm
         model: Acme\AcmeBundle\Entity\Documents
         provider: ~
         listener: ~
         finder: ~

它适用于在DB中索引我的文档,除了附件外没有任何问题。它在cron作业运行时不会为附件编制索引,但如果我手动运行 populate 命令,它将索引我的附件。这真的很奇怪,混淆了我
还有一件事可能有助于找到解决方案:我在Windows机器上构建了相同的计划任务来运行命令,它可以正常工作。

如果你能提供帮助,请欣赏它

1 个答案:

答案 0 :(得分:0)

最后我可以解决这个问题。事实上,这不是FOSelasticabundle问题,问题在于cronjob 我正在运行crontab,如下所示:

#m h  dom mon dow   command
*/2 * * * *  /var/www/Symfony/populateElastica.sh

我发现需要重定向脚本需要运行的路径才能完美运行

#m h  dom mon dow   command
*/2 * * * *  cd /var/www/Symfony && /var/www/Symfony/buildAcmeIndex.sh

您需要将buildAcmeIndex.sh的shell脚本定义为:

#! /bin/sh
echo -------------- Auto Index Started ----------------
/usr/bin/php /var/www/Symfony/app/console fos:elastica:populate --env=prod --no-reset
echo --------------- Auto Index done! -----------------

请记住将 php 的路径设置为Linux服务器中的正确路径。