2012-10-17 28 views
5

Merak ediyorum, bir cron işi yaparken wget [parametreler], curl [parametreler] ve php [parameters] arasında bir fark var mıdır?cronjobs için wget, curl ve php

"cron-00-00.php" komut dosyası varsa ve çalıştırmam gerekirse, yukarıda belirtilenlerin her biri ne yapar?

0 0 * * * php -q /your_abolute_path/includes/php/cron/cron-00-00.php >/dev/null 2>&1 
0 0 * * * wget -O - -q -t 1 http://your_domain_com/includes/php/cron/cron-00-00.php >/dev/null 2>&1 
0 0 * * * curl http://your_domain_com/includes/php/cron/cron-00-00.php 

Ya da (hangisine en uygun olana bağlı olarak) birini kullanmak isteğe bağlı mı?

Şu anda bunların 3 tanesi farklı işlevlere sahip olduğunu düşündüm. Lütfen kavramlarımı düzeltin.

+1

Evet, bir fark var. Bununla birlikte, özellikle merak ettiğiniz şey nedir? Çünkü senin durumunda hiçbir fark olmayabilir. Bunun dışında, eğer senaryonuzu CLI'da çalıştırabiliyorsan, HTTP isteklerini Wget ve Curl olarak çalıştırmayı tercih ederim. – hakre

+2

Ana fark, curl + wget yöntemlerinin (esas olarak aynı), HTTP başlıklarını "$ _SERVER" içinde dolduracağıdır. Komut satırı çağrısı olmaz. – Leigh

+2

@Leigh yorumuna ek olarak, curl + wget, apache kullanıcısı ile çalışır ve php cli, cron kullanıcısıyla çalışır. – m4t1t0

cevap

9

PHP'yi doğrudan çalıştırmak en basit seçenektir. Apache (veya diğer web sunucusu) örneğinizde bir ağ yuvası açmaz. Ayrıca, makinenizi zararlı üçüncü şahıslara karşı korumak için tasarlanmış web sunucularıyla ilişkili sınırlamaları atlar. Ancak, PHP'nin komut satırı sürümünün çalıştığı ortam biraz farklıdır ve kötü yazılmış bir betiğin düzgün davranmasını engellemek için yeterli olabilir. Ayrıca, bazı web sunucusu, apache'nin işlem alanı içinde PHP'yi bir DSO modülü olarak çalıştırır ve apache'nin kullanıcı izinlerini kullanır. Bu, sonuçlarınızı etkileyebilir (belki olumlu veya belki de olumsuz).

Diğer iki seçenek arasından, curl, wget'dan biraz daha yaygın bir şekilde dağıtılmış gibi görünmektedir;