Crontab ile php yürütülüyor

6 Cevap php

Ben tarifeli olarak bir php komut dosyası çalıştırmak çalışıyorum. Yani crontab iyi bir fikir olduğunu düşünmüştü. Ben kullanıyorum sunucu I aşina değilim hangi Linux üzerinde. Yani yaşıyorum sorun ben nasıl php komut dosyası çalıştırılabilir yapmak bilmiyorum, olduğunu. Ben komut başvuru veya komut satırından php çalıştırabilirsiniz bir klasöre içine koymak gerekir. Yani, örneğin, benim crontab'ın vermek için hangi yolu bilmiyorum:

5  * * * * var/www/some/path/script.php

Ben bu php yürütülebilir bulunan olma konusunda bazı muğlak bilgiler bulundu

/usr/bin/php

Ama belki ben yüklü değil, orada herhangi bir php dosyasını bulamıyorum? Benim php5 ve apache kurulumu şöyledir:

/etc/php5

Yani benim soru başka bir klasörde crontab ile bir php-komut dosyası çalıştırmak için yine de, orada olur, ya da ben sadece usr / bin / php php yürütülebilir eksikliği yok?

6 Cevap

Bir komut satırında yazarak başlayın:

whereis php

Cron altında çalıştırılır kullanıcı olarak bunu yapın. Bu size yürütülebilir yolunu gösterecektir. Cron girişi (bu sizin PATH değişkeni zaten değilse) Daha sonra bu yolu kullanabilirsiniz:

5 * * * * /your/path/to/php /var/www/some/path/script.php

Edit: size sahip tüm yüklü Apache PHP modülü ise php5-cli (Ubuntu paket adı) paketi yüklemeniz gerekebilir. Bu size bir komut satırından çalıştırabilirsiniz ikili yürütülebilir verecektir.

Bu bir Linux sistem midir?

In newer Linux distributions, there is
actually a convienient crontab-setup system
that doesn't require any entry in the crontab by the user. E.g in SuSE Linux, you have directories

/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.monthly/
/etc/cron.weekly/

Just put an invocation script (konno_php_start) in any of these directories, like

/etc/cron.hourly/konno_php_start

which is executable (chmod 755 or so) and contains:

#!/bin/sh
cd /var/www/some/path/
php  script.php >> logfile.txt 2>&1

ve cron daemon yeniden başlatın. Thats it.

From the logfile, you'll see if your php interpreter
will be found in the PATH. If not, change the line in /etc/cron.hourly/konno_php_start to

/full/path/to/php  script.php >> logfile.txt 2>&1

Selamlar

rbo

Ben yürütülebilir bulmak için bir izi takip etmek bulmak zorundaydı:

andy@ararat:~$ type php
php is /usr/bin/php

andy@ararat:~$ file /usr/bin/php
/usr/bin/php: symbolic link to `/etc/alternatives/php'

andy@ararat:~$ file /etc/alternatives/php
/etc/alternatives/php: symbolic link to `/usr/bin/php5'

andy@ararat:~$ file /usr/bin/php5
/usr/bin/php5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

bu yüzden bu kadar gibi php yürütülebilir yolunu / usr/bin/php5 eklemeniz gerekir:

andy@ararat:~$crontab -e
#*/1 * * * * /usr/bin/php5 /home/andy/www/dev.com/corp_rewards_cron.php

Ayrıca env, bulmak ve sizin için php başlatacak kullanabilirsiniz:

/usr/bin/env php /var/www/some/path/script.php

Yoksa script.php (ilk satır) bir barakadan yerleştirebilirsiniz:

#!/usr/bin/env php

sonra çalıştırılabilir hale ve crontab ilk örnekteki gibi, doğrudan çağrı yapmak:

5  * * * * /var/www/some/path/script.php

Bunu böyle yapmak öneririz,

*/5 * * * * /path/gridmon2.pl 1> /dev/null 2> /dev/null

burada size pl Eğer wget ya da bunun gibi bir şey kullanarak grep gerekir kodu.:

wget "/www/root/index.php"

ya da sadece bu gibi yapabilirsiniz:

/usr/bin/wget "/www/root/index.php"

Bu sadece benim önerim, ben sadece yerel olarak harici bir siteye wget çalışın ettik ve çalışır.

deneyin ve geri lütfen.

Bu gibi bir şey için cron kullanarak IMO harika bir fikir değildir.

Neden sadece bir daemon olarak çalıştırmak için php script değiştirmek değil mi?

Ya da Daemon kendiniz inşa, bu programı yürütecek?

Bu php çok kolay.

added example:

daemon.php:

while (1) {
    shell_exec("php subdaemon.php");
    sleep(60*5);
}

subdaemon.php:

$interval=3600*24;
$last_run=get_last_run();
$time=time();

if ($last_run+$interval>$time) die();
do_stuff();

save_last_run($time);