1

我在 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: ~

它可以正常索引我在数据库中的文档并且没有问题,除了附件。cron 作业运行时它不会索引附件,但如果我手动运行填充命令,它将索引我的附件。这真的很奇怪,把我搞混了。

另一件事可能有助于找到解决方案:我在 Windows 机器中构建了相同的计划任务来运行命令,它可以正常工作

如果您能提供帮助,请不胜感激

4

1 回答 1

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

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

#! /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 服务器中的正确路径。

于 2014-03-03T16:20:37.237 回答