Kıvrımı bir cron işinde nasıl kullanabilirim?


12

Ben haftada bir kez (aynı sunucuda) bir URL çağıran cpanel cron iş ayarlamanız gerekir. Wget kullanacaktım ama bu kullanılan paylaşılan sunucuda devre dışı olduğu ortaya çıkıyor.

Wget'e bir alternatif var mı ? Kıvrılmanın kullanılabileceğini duydum ama bunu bir cron komutuyla nasıl ayarlayacağımı bilmiyorum.

Ayrıca, cronjob'un tamamlandığında hiçbir şey yapmamasını sağlayan komut nedir?

Herhangi bir fikir büyük takdir!


1
Kullanabilseydiniz ne yapardınız?
user9517

Neden wget'i devre dışı bırakmışlarsa kıvrılmaya izin verirler?
andol

@Iain - bir PHP betiği işlemek gerekiyor
davidhyland

@Andol - çok iyi bir soru. işte böyle
davidhyland

Yanıtlar:


21

wget kullanmak yerine, curl şu şekilde çalışır:

curl --silent http://domain.com/cron.php

wget ile aynı şekilde çalışır. Eğer başlattığınız bir php dosyası, böyle komut satırı php yorumlayıcı üzerinden çalıştırmak olamaz herhangi bir nedeni var mı:

php -q /path/to/cron.php

bir web sunucusu isteği için aynıdır ve genellikle webserver / curl üzerinden çağrıldığında belirli zaman aşımı kısıtlamaları olmadan çok daha hızlı çalışır


Kıvrımı bu şekilde çağırmak sonucu stdout'a yazdırır. Wget'e eşdeğer davranmak ve çıktıyı url'ye göre bir dosya adına kaydetmek istiyorsanız, --remote-name bayrağını da eklemek istersiniz.
andol

--silent, yanıt veya çıktı olmadığı anlamına mı geliyor?
davidhyland

1
Ayrıca, komut satırından php betiğinin çağırılması aynı sonucu vermeyebilir. Farklı yapılandırma olasılığına ek olarak, betiğin farklı bir kullanıcı olarak bu şekilde çalıştırılmasının nadir olmayan bir senaryosu da vardır. Her şey kuruluma bağlıdır.
andol

Eh, "curl --silent domain.com/script.php > / dev / null 2> & 1" kullanarak çalıştım ama aynı zamanda "curl -o --url domain.com/script.php > / dev / null 2> & 1 "fark nedir?
davidhyland

1
İlk komut tüm çıktıları / dev / null'a gönderir, ikincisi -urlkomut dosyasını çalıştıran kullanıcının ana dizininde php dosyanızın çıktısını içeren bir dosya oluşturur, diğer tüm çıktılar / dev / null'a gider.
user9517

7

Kıvrılma mevcutsa, şöyle bir şey deneyebilirsiniz

1 1 * * 0  /usr/bin/curl --silent http://example.come/some.php &>/dev/null

Bu, curl'un tamamen sessiz olmasına neden olur, böylece tamamlandığında herhangi bir e-posta almazsınız.


4
Ben de --show-error seçeneğini kullanmanızı tavsiye ederim, bu yüzden normal çalışma için sessizdir, ancak gerçekleşirse bir hata verecektir.
emerino

6

Bu parametre aktarım için izin verilen maksimum süreyi ayarladığından --silent öğesine ek olarak "-m" parametresi eklemenizi öneririm. Her dakika cron'u çağırdığınızı ve komut dosyasının 2 dakika sürdüğünü düşünün - bu, sunucu yükü veya diğer şeyler üzerinde kötü etki yaratabilir.

1 1 * * 0  /usr/bin/curl -m 120 -s http://example.come/some.php &>/dev/null
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.