簡體   English   中英

實施時間表/ cron的正確方法

[英]Right way to implement schedule / cron

我需要在Pimcore中添加批量對象的創建。 首先,我嘗試使用Web,但是由於集合數量龐大,請求花了很長時間,並且實際上放棄了方法。

然后我選擇了cron來安排以后的工作,但是我遇到了其他問題。 像其他RAD應用程序一樣,pimcore在/ website / var / versions等文件夾中自動生成一些代碼。 因此,這些文件夾會自動獲得Web用戶(在我的情況下為apache用戶)的許可。

但是,由執行Pimcore API的普通用戶運行的My cron腳本要求創建對象/數據,但由於權限不足而無法寫入文件夾。 現在,我可以選擇以下兩種方法之一。

  1. 通過apache用戶運行cron,出於安全原因,這是不行的。
  2. 授予可寫權限(chmod 777或通過使用chown將我的用戶添加到apache組)。 但是,當從瀏覽器進行管理時,pimcore會不時創建新文件夾。 因此,這些新文件夾沒有使用cron腳本編寫的權限(權限最大為755,我得到的新文件夾不足以進行組寫入)。

我以前在google上搜索過,發現命令setfacl設置了文件夾的默認用戶/權限。 我這樣使用。

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

但是它經常失敗,我需要一次又一次地手動授予權限。

現在是否有解決此問題的實用方法?

注意:我當前正在使用Amazon Linux AMI。 但是以后可以將其更改為redhat或ubuntu,因此更好的是可以使用通用Linux解決方案。

Pimcore已經要求其維護作業(cron)在apache用戶下運行,因此不在apache用戶下運行您的工作可能不會有多大改善。

但是,您可能希望采用用於集成新聞通訊發送的方法。

參見/pimcore/modules/reports/controllers/NewsletterController.php:194

$cmd = Tool\Console::getPhpCli() . " " . realpath(PIMCORE_PATH . DIRECTORY_SEPARATOR . "cli" . DIRECTORY_SEPARATOR . "send-newsletter.php"). " " . escapeshellarg($letter->getName()) . " " . escapeshellarg(Tool::getHostUrl());
            Tool\Console::execInBackground($cmd, PIMCORE_LOG_DIRECTORY . "/newsletter--" . $letter->getName() . ".log");

上面的代碼運行CLI腳本/pimcore/cli/send-newsletter.php

使用這種方法,就不需要cron了,因為該作業是作為CLI運行的,所以它不會超時(如果您沒有為PHP CLI顯式設置超時)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM