Выполнение сценария PHP с заданием CRON [закрыто]

Итак, я действительно пытался это понять, но кажется, что Django все еще не делает этого очень простым. Я не настолько глупый, но я просто не вижу какого-либо (несколько) простого решения.

Я считаю, что в целом довольно уродливо переопределять виды Admin для такого рода вещей, и каждый пример, который я нахожу никогда полностью не применимым к представлениям администратора.

Это такое распространенное обстоятельство с моделями, которые я делаю, что я нахожу это ужасным, что нет очевидного решения этого ...

У меня есть эти классы:

# models.py
class Company(models.Model):
    # ...
class Contract(models.Model):
    company = models.ForeignKey(Company)
    locations = models.ManyToManyField('Location')
class Location(models.Model):
    company = models.ForeignKey(Company)

Это создает проблему при настройке администратора для компании, поскольку у него есть встроенные параметры для контракта и местоположения, а параметры m2m для Контракта для местоположения не фильтруются должным образом в соответствии с компанией, которую вы сейчас редактируете.

Короче говоря, мне понадобится какая-то опция администратора, чтобы сделать что-то вроде этого:

# admin.py
class LocationInline(admin.TabularInline):
    model = Location
class ContractInline(admin.TabularInline):
    model = Contract
class CompanyAdmin(admin.ModelAdmin):
    inlines = (ContractInline, LocationInline)
    inline_filter = dict(Location__company='self')

В конечном счете мне было бы безразлично, если процесс фильтрации был размещен на базе CompanyAdmin, или если он был помещен в ContractInline. (Размещение его на inline имеет больше смысла, но это затрудняет ссылку базового контракта как «я».)

Есть ли кто-нибудь, кто знает что-то столь же прямое, как этот крайне необходимый ярлык? Назад, когда я сделал администраторов PHP для такого рода вещей, это считалось базовой функциональностью! Фактически, он всегда был автоматическим и должен был быть отключен, если вы действительно этого не хотели!

24
задан Mark Amery 14 July 2018 в 17:35
поделиться

4 ответа

Crontab нужен полный путь на вашем сервере.

0 0 * * * php /var/www/vhosts/domain.com/httpdocs/scripts/example.php

Это будет выполняться каждый день в полночь.

25
ответ дан karmafunk 14 July 2018 в 17:35
поделиться

Примерно так:

00 * * * * /usr/local/bin/php /home/john/myscript.php

00 * * * * означает ежечасно / usr / local / bin / php - где основной движок php находится в /home/john/myscript.php - скрипт для запуска (физический путь)

Вы также можете использовать специальный ключ @hourly:

@hourly /usr/local/bin/php /home/john/myscript.php
2
ответ дан Adidi 14 July 2018 в 17:35
поделиться

Используете ли вы компанию для размещения своего сайта?

Поскольку в вашем c panel у вас должен быть значок, который называется cron jobs, вы можете указать ему, какой сценарий выполнять и когда.

0
ответ дан Smita 14 July 2018 в 17:35
поделиться

Если у вас есть доступ sudo к вашему Linux-серверу: - Затем выполните следующее

sudo crontab -e

. Откроется вкладка cron на вашем сервере.

Далее вам нужно сделать запись cron для файла, который вы хотите выполнить

00 00 * * * /usr/local/bin/php "path of the php file which you want to execute"

00 00 * * *, который будет запускать ваш cron ежедневно в полночь, то есть в 0 часов и 0 минут

4
ответ дан Nishant 14 July 2018 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: