Мне нужно добавить создание массовых объектов в Pimcore. Сначала я попробовал с вебом, но из-за большого размера набора, запрос занял много времени, а подход был отброшен на практике.
Затем я выбрал cron для планирования работы на более поздний период, но я получаю другую проблему. Как и в некоторых других приложениях RAD, pimcore генерирует часть кода автоматически в некоторых папках, таких как / website / var / version. Таким образом, эти папки автоматически получают разрешение веб-пользователя (в моем случае это пользователь apache).
Но скрипт My cron запускается обычным пользователем, который выполняет вызовы API Pimcore для создания объекта / данных, но не может записывать в папки из-за недостаточных прав доступа. Теперь у меня может быть один из двух вариантов.
Я искал ранее в 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).
Других решений пока нет …