实现schedule / cron的正确方法

时间:2015-11-02 07:51:25

标签: php apache cron user-permissions pimcore

我需要在Pimcore中添加批量对象创建。首先我尝试使用网络,但是由于设置的大小,请求花费了很长时间并且实际上丢弃了方法。

然后我选择了cron来安排后期工作,但我得到了其他问题。像其他一些RAD应用程序一样,pimcore会在/ website / var / versions等文件夹中自动生成一些代码。所以这些文件夹自动获得web用户的权限(在我的情况下是apache用户)。

但我的cron脚本由普通用户运行,执行Pimcore API调用对象/数据创建但由于权限不足而无法写入文件夹。现在我可以选择两个选项之一。

  1. 通过apache用户运行cron,出于安全考虑,这是一个很大的问题。
  2. 提供可写权限(chmod 777 like或使用chown将我的用户添加到apache组)。但是,当从浏览器管理时,pimcore会按时创建新文件夹。所以这些新文件夹没有cron脚本写入的权限(权限是max 755,我得到的新文件夹对于组写不够)。
  3. 我之前在google上搜索过,发现命令setfacl用于设置文件夹的默认用户/权限。我就是这样用的。

        `sudo setfacl -Rm u:apache:rwx,d:u:apache:rwx website/var/versions/object` 
    

    但它经常失败,我需要一次又一次地手动许可。

    现在是否有任何实用的方法来解决这个问题?

    注意:我目前正在使用Amazon Linux AMI。但它可以在以后改为redhat或ubuntu,所以它更好的是一个通用的linux解决方案可用。

1 个答案:

答案 0 :(得分:2)

Pimcore已经要求其维护作业(cron)在apache用户下运行,因此不在apache用户下运行你的工作可能不会有太大改进。

但您可能希望采用用于综合时事通讯发送的方法。

参见 /pimcore/modules/reports/controllers/NewsletterController.php:194

SET s.attendance = s.attendance + 1

以上代码运行CLI脚本 /pimcore/cli/send-newsletter.php

使用这种方法不需要cron,因为作业以CLI运行,所以它不会超时(如果你没有明确设置PHP CLI的超时)。