Addons - CLI İşi / Cron Runner | EternalTeam.Org Xenforo Community
Neler yeni
Scorpiol                                                                                            Scorpiol VDS satın al

Duyuru - Announcement

Bu Tasarım EternalTeam® Tarafından Kara Üzüm Habbesi Dinlerken Issız Gecelerde Kodlanmıştır . İyi Forumlar.
Reklam Vermek İçin Tıklayınız...
Kaynak ikonu

Addons CLI İşi / Cron Runner 2.1.0

indirmek için izniniz yok
Uyumlu XF Sürümleri2.2Görünür MarkalaşmaHAYIRFarsça Açıklama
1596700351453.png


Bu XenForo 2.2 eklentisi, XF 2.2'de tanıtılan yerleşik xf:run-jobs komutunun yerine Unix cron ile kullanım için gelişmiş bir CLI tetiklemeli iş çalıştırıcı uygular. Komut hg:run-jobs olarak adlandırılır ve xf ile aynı şeyi

yapar :run-jobs yapar, ancak daha fazla seçenek ve işlevsellik ile.

Özellikler

Bu eklentinin ana özellikleri:
  • bir cron görevinden her dakika tetiklense bile komutların işleri/cronları bir seferde 10 dakikaya kadar işlemesine izin verir (paralel olarak birden fazla yürütmeyi önlemek için bir kilit dosyası kullanır) - yüksek trafikli sitelerde iş performansını artırmak için idealdir
  • işler ve cron görevleriyle ilgili sorunları test etmek ve belirlemek için kapsamlı hata ayıklama çıktısı mevcuttur
  • xf:run-jobs için açılan değiştirme
Gereksinimler Bu eklenti, PHP 7.0 veya üstünü gerektirir ve normal eklenti kurulumuna göre XenForo 2.2.0 beta 1 Kurulum

Kurulumunda test edilmiştir . Kurulduktan sonra, İş yürütme tetikleme ayarını "Sunucu tabanlı tetikleme" olarak değiştirmek için Sistem ve performans seçenekleri sayfasına gidin İlk olarak, iş yürütücünüzün çalıştığını test etmelisiniz - CLI'nizden aşağıdaki komutu yürütün : .d) çalıştırılacak bekleyen işleri kontrol ederek her dakika iş çalıştırıcıyı yürütür. Varsayılan olarak, iş çalıştırıcı en fazla 30 saniye çalışacak ve kuyrukta çalıştırılabilir iş kalmayıncaya kadar bekleyen işleri yürütecektir. Yapılandırma















Komut satırında --time=[TIME] seçeneğini belirterek iş çalıştırıcının maksimum yürütme süresini ayarlayabilirsiniz.


Örneğin, iş çalıştırıcının maksimum 45 saniye yürütmesine izin vermek için:

Bash:
$ php <path to your forum root>/cmd.php --time=45 hg:run-jobs
Bu eklenti, birden fazla iş çalıştırıcı komutunun aynı anda yürütülmesini önlemek için kilit dosyalarını kullanır, bu da komutun yoğun sitelerde daha uzun süre çalışmasına izin verir.

İzin verilen maksimum yürütme süresi 10 dakikadır (600 saniye). Komut, daha fazla bekleyen iş bulana kadar yürütülür ve sonra durur - bu nedenle yürütme süresi genellikle yalnızca birkaç saniyedir.


İş yürütmenizi daha fazla özelleştirmek için, her bir işin çalıştırılmasına izin verilen maksimum süreyi de ayarlayabilirsiniz.
Bu, bir XenForo config.php Seçeneği aracılığıyla yapılandırılır:


PHP:
$config['jobMaxRunTime'] = 8;
jobMaxRunTime seçeneği, mümkünse başka bir geçişte daha fazla işlenmek üzere askıya alınmadan önce işleme işlerinin çalışmasına izin verileceği süreyi saniye cinsinden yapılandırır. Varsayılan ayar, tarayıcı tarafından tetiklenen iş çalıştırıcı için optimize edilmiştir ve bu nedenle işlerin bir CLI ortamında daha uzun süre yürütülmesine izin vermek için bunu daha yüksek bir değere ayarlamak isteyebilirsiniz.

Genel olarak, çok uzun tek bir işin diğer işlerin zamanında yürütülmesini engelleyebileceği bir durumdan kaçınmak için bu ayarın nispeten küçük bir değerde tutulması önerilir. Sunucu yükünüz ve forum boyutunuz için en uygun değeri bulmak için bazı denemeler gerekebilir. Şüpheniz varsa, 8 saniyelik varsayılan ayar olarak bırakın.

kullanım

run-jobs komutu, yukarıdaki talimatlara göre bir cron görevi kullanılarak otomatik olarak yürütülmelidir.

İşleri Göster

hg:show-jobs komutu, bekleyen tüm işlerin bir listesini çıkarır, böylece iş kuyruğunun ne kadar dolu olduğunu görebilirsiniz.

Varsayılan olarak yalnızca bir sonraki programlanmış 100 iş gösterilecektir, bekleyen tüm işlerin tam listesini göstermek için --all seçeneğini kullanabilirsiniz.

Listede her zaman en az bir iş (ana Cron işi) bulunmalıdır. XF 2.1 ve üstü için yükseltme kontrol işini de göreceksiniz.

Bash:
$ php cmd.php xf:show-jobs

2 bekleyen iş bulundu

+----------------+---------------- -+----------------------+----------------------+
| Anahtar | Sınıf | Sonraki Çalıştır | Son Çalıştırma |
+----------------+-----------------+-------------- --------+----------------------+
| cron | XF\İş\Cron | 11-Nis-2019 10:52:01 | 11-Nis-2019 10:52:31 |
| xfYükseltme Kontrolü | XF:Yükseltme Kontrolü | 12-Nis-2019 00:12:21 | 10-Nis-2019 21:24:03 |
+----------------+-----------------+-------------- --------+---------------------+

Geçerli saat: 11-Nis-2019 10:52:31 (UTC+ 10:00)
İşlerde Hata Ayıklama

İşler ve Cron görevleriyle ilgili sorunları tanımlamaya yardımcı olacak kapsamlı hata ayıklama araçları vardır.

Hata ayıklama modunda çalıştırmak için, önce işleri otomatik olarak çalıştıran Unix cron'u devre dışı bırakın (hata ayıklamayı bitirdiğinizde tekrar açmayı unutmayın!) ve ardından ayrıntı seçeneklerini kullanın (Ayrıntılı: -v, Çok ayrıntılı: -vv) veya konsolda gösterilecek çıktı düzeyini belirtmek üzere hg:run-jobs komutu için Debug: -vvv).

Çıktı konsoladır ve Monolog kitaplığı tarafından kullanılana benzer bir biçimdedir (çıktıyı oluşturmak için Monolog kullanmasak da).

Örneğin, Ayrıntılı seçenek -v:

Bash:
$ php cmd.php hg:run-jobs -v
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\CleanUp::runUserDowngrade executed in 0.01 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry Hampel\LogDigest\Cron\SendLogs::serverError executed in 0.00 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\MemberStats::rebuildMemberStatsCache executed in 0.00 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry Hampel\Slack\Cron\NotifyLogs::notify executed in 0.03 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\Feeder::importFeeds executed in 0.01 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XFMG\Cron\RandomCache::generateRandomMediaCache executed in 0.07 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\EmailBounce::process executed in 0.00 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\Counters::rebuildForumStatistics executed in 0.02 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Job executed in 0.20 seconds

Bekleyen çalıştırılabilir iş yok
Çok Ayrıntılı -vv seçeneği, genellikle JobResult hakkında bağlam ekler:

Bash:
$ php cmd.php hg:run-jobs -vv
[2019-11-27 23:49:49] XF\Job\Cron: Cron entry Hampel\Slack\Cron\NotifyLogs::notify executed in 0.01 seconds {"entry_id":"slackNotifyServerErrors","cron_class":"Hampel\\Slack\\Cron\\NotifyLogs","cron_method":"notify","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":-1}},"active":true,"next_run":1574898543,"addon_id":"Hampel\/Slack"}

[2019-11-27 23:49:49] XF\Job\Cron: Cron entry Hampel\SparkPost\Cron\MessageEvents::fetchMessageEvents executed in 0.00 seconds {"entry_id":"sparkpostMessageEvents","cron_class":"Hampel\\SparkPost\\Cron\\MessageEvents","cron_method":"fetchMessageEvents","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":19,"1":49}},"active":true,"next_run":1574898543,"addon_id":"Hampel\/SparkPost"}

[2019-11-27 23:49:49] XF\Job\Cron: Job executed in 0.03 seconds {"completed":false,"jobId":2,"continueDate":1574898603,"continueDate_formatted":"2019-11-27 23:50:03 UTC","statusMessage":"Running... Cron entries"}

[2019-11-27 23:49:49] Hampel\SparkPost:MessageEvent: Job executed in 0.83 seconds {"completed":true,"jobId":12,"continueDate":null,"continueDate_formatted":"","statusMessage":""}

Bekleyen çalıştırılabilir iş yok
Ve son olarak -vvv Hata Ayıklama seçeneği iş hakkında ekstra bilgi ekler:


Bash:
$ php cmd.php hg:run-jobs -vvv
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Feeder::importFeeds executed in 0.01 seconds {"entry_id":"feeder","cron_class":"XF\\Cron\\Feeder","cron_method":"importFeeds","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":2,"1":12,"2":22,"3":32,"4":42,"5":52}},"active":true,"next_run":1574879524,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Counters::rebuildForumStatistics executed in 0.02 seconds {"entry_id":"forumStatistics","cron_class":"XF\\Cron\\Counters","cron_method":"rebuildForumStatistics","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":3,"1":13,"2":23,"3":33,"4":43,"5":53}},"active":true,"next_run":1574879584,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\MemberStats::rebuildMemberStatsCache executed in 0.03 seconds {"entry_id":"memberStatsCache","cron_class":"XF\\Cron\\MemberStats","cron_method":"rebuildMemberStatsCache","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":0,"1":10,"2":20,"3":30,"4":40,"5":50}},"active":true,"next_run":1574880004,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Trophy::runTrophyCheck executed in 0.00 seconds {"entry_id":"trophy","cron_class":"XF\\Cron\\Trophy","cron_method":"runTrophyCheck","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":40}},"active":true,"next_run":1574880004,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XFMG\Cron\Statistics::cacheGalleryStatistics executed in 0.01 seconds {"entry_id":"xfmgCacheStats","cron_class":"XFMG\\Cron\\Statistics","cron_method":"cacheGalleryStatistics","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":10,"1":40}},"active":true,"next_run":1574880004,"addon_id":"XFMG"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\CleanUp::expireTempUserChanges executed in 0.00 seconds {"entry_id":"expireTempUserChanges","cron_class":"XF\\Cron\\CleanUp","cron_method":"expireTempUserChanges","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":42}},"active":true,"next_run":1574880124,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XFMG\Cron\RandomCache::generateRandomAlbumCache executed in 0.02 seconds {"entry_id":"xfmgGenerateRandomAlbum","cron_class":"XFMG\\Cron\\RandomCache","cron_method":"generateRandomAlbumCache","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":12,"1":42}},"active":true,"next_run":1574880124,"addon_id":"XFMG"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\EmailUnsubscribe::process executed in 0.00 seconds {"entry_id":"emailUnsubscribe","cron_class":"XF\\Cron\\EmailUnsubscribe","cron_method":"process","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":13,"1":43}},"active":true,"next_run":1574880184,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Ban::deleteExpiredBans executed in 0.01 seconds {"entry_id":"deleteExpiredBans","cron_class":"XF\\Cron\\Ban","cron_method":"deleteExpiredBans","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":45}},"active":true,"next_run":1574880304,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Job executed in 0.32 seconds {"completed":false,"jobId":2,"continueDate":1574898543,"continueDate_formatted":"2019-11-27 23:49:03 UTC","statusMessage":"Running... Cron entries"} {"job_id":2,"unique_key":"cron","execute_class":"XF\\Job\\Cron","execute_data":{},"manual_execute":0,"trigger_date":1574879464,"last_run_date":1574879405,"trigger_date_formatted":"2019-11-27 18:31:04 UTC","last_run_date_formatted":"2019-11-27 18:30:05 UTC"}

[2019-11-27 23:48:03] Hampel\SparkPost:MessageEvent: Job executed in 0.90 seconds {"completed":true,"jobId":10,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":10,"unique_key":"SparkPostMessageEvents","execute_class":"Hampel\\SparkPost:MessageEvent","execute_data":{},"manual_execute":0,"trigger_date":1574898483,"last_run_date":null,"trigger_date_formatted":"2019-11-27 23:48:03 UTC","last_run_date_formatted":""}

[2019-11-27 23:48:03] Hampel\SparkPost:EmailBounce: Job executed in 0.02 seconds {"completed":true,"jobId":11,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":11,"unique_key":"SparkPostEmailBounce","execute_class":"Hampel\\SparkPost:EmailBounce","execute_data":{},"manual_execute":0,"trigger_date":1574898483,"last_run_date":null,"trigger_date_formatted":"2019-11-27 23:48:03 UTC","last_run_date_formatted":""}

Bekleyen çalıştırılabilir iş yok
Özel iş hata ayıklaması

Özel işlerinize ek hata ayıklama ekleyebilirsiniz.

****** sınıfımızın logJobProgress işlevini çağırmak için iş sınıfınıza aşağıdaki işlevi ekleyin:

PHP:
protected function log($message, array $context = [])
{
// check to see if we actually have a ****** available and abort if not
if (!isset($this->app['cli.******'])) return;

/** @var ****** $****** */
$****** = $this->app['cli.******'];
$******->logJobProgress($message, $context, $this);
}
Ardından, Job Runner ayrıntılı modda yürütüldüğünde konsola bilgi göndermek için iş kodunuzdaki log() işlevini çağırabilirsiniz.

Örneğin - Hampel\JobRunner\Job\TestJob eklentisinde bulunan test işine bakın:


PHP:
public function run($maxRunTime)
{
$this->log("About to start test job", $this->data);

$mail = $this->app->mailer()->newMail();
$mail->setTo($this->data['email']);
$mail->setContent(
"Test job",
"This is an email sent from a test job"
);
$sent = $mail->send();

$this->log("Sent mail", ['sent' => $sent]);

return $this->complete();
}
Yukarıdaki kod, Job Runner hata ayıklama modundayken aşağıdaki çıktıyı üretecektir:


Bash:
$ php cmd.php hg:run-jobs -vvv
[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: About to start test job {"email":"[email protected]"} {"job_id":17,"class":"Hampel\\JobRunner\\Job\\TestJob","status_message":"Testing jobs","data":{"email":"[email protected]"},"execution_time":"0.00"}

[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: Sent mail {"sent":1} {"job_id":17,"class":"Hampel\\JobRunner\\Job\\TestJob","status_message":"Testing jobs","data":{"email":"[email protected]"},"execution_time":"0.95"}

[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: Job executed in 0.95 seconds {"completed":true,"jobId":17,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":17,"unique_key":null,"execute_class":"Hampel\\JobRunner:TestJob","execute_data":{"email":"[email protected]"},"manual_execute":0,"trigger_date":1574900777,"last_run_date":null,"trigger_date_formatted":"2019-11-28 00:26:17 UTC","last_run_date_formatted":""}

Bekleyen çalıştırılabilir iş yok
Sessiz modda çalıştırıldığında çıktı gösterilmez - ve daha da önemlisi, bu eklenti devre dışı bırakılırsa günlük kodunun kaldırılması gerekmez. Önemli olan if (!isset(\XF::app['cli.******'])) dönüşüdür; ******'ımız mevcut değilse iptal edilecek olan satır.

Özel Cron görevi hata ayıklaması

Benzer bir mekanizma kullanarak, özel Cron görevlerimize de hata ayıklama kodu ekleyebiliriz:

****** sınıfımızın log() işlevini çağırmak için Cron görevlerinize biraz farklı bir işlev ekleyin:


kod:
protected static function log($message, array $context = [])
{
// check to see if we actually have a ****** available and abort if not
if (!isset(\XF::app['cli.******'])) return;

/** @var ****** $****** */
$****** = \XF::app['cli.******'];
$******->log("XF\Job\Cron", $message, $context);
}
Ardından, basitçe şunun gibi bir şey arayın: self::log("bir şey hakkında bir mesaj", ['anahtar' => 'değer']); Job Runner ayrıntılı modda yürütüldüğünde konsola bilgi çıkışı sağlamak için kodunuz içinde.

****** Özelliği

Sınıflarınıza ekleyebileceğiniz bir özellik de vardır: Kodunuzdan çağırabileceğiniz bazı temel günlük tutma işlevlerini uygulayan Hampel\JobRunner\Cli\LoggerTrait:
  • getLogger
  • kayıt
  • günlükNormal
  • günlük Ayrıntılı
  • logVeryAyrıntılı
  • hata ayıklamak
Dağıttığınızda günlük kaydı veya hata ayıklama kodunuzu eklentinizden kaldırmanıza gerek yoktur - hg:run-jobs normal veya sessiz modda çalıştırıldığında, çıktıların hiçbiri gösterilmez.
Yazar
H4cktime
İndirilme
0
Görüntüleme
243
İlk yayınlama
Son güncelleme
Değerlendirme
0.00 yıldız 0 değerlendirme

H4cktime ait diğer kaynakar

xenforo eklentileri xenforo eklentiler defacer VDS satın al hacker blog
Üst Alt