Ostatnio badałem wykorzystanie Beanstalkd z PHP. Nauczyłem się sporo, ale mają kilka pytań dotyczących konfiguracji na serwerze itpJak skonfigurować Beanstalkd z PHP
Oto jak widzę to działa:
- zainstalować Beanstalkd oraz wszelkie zależności (takie jak libevent) na moim serwerze Ubuntu. Następnie uruchamiam demona Beanstalkd (który powinien zasadniczo działać przez cały czas).
- Gdzieś w mojej witrynie (np. Gdy użytkownik wykonuje pewne czynności itp.) Zadania są dodawane do różnych rur w kolejce Beanstalkd.
Mam skrypt bash (taki jak następujący), który jest uruchamiany jako deamon, który zasadniczo wykonuje skrypt PHP.
#!/bin/sh php worker.php
4) Skrypt pracownik miałby coś takiego wykonać w kolejce zadań:
while(1) {
$job = $this->pheanstalk->watch('test')->ignore('default')->reserve();
$job_encoded = json_decode($job->getData(), false);
$done_jobs[] = $job_encoded;
$this->log('job:'.print_r($job_encoded, 1));
$this->pheanstalk->delete($job);
}
Teraz tutaj są moje pytania oparte na powyższej konfiguracji (co mnie poprawić jeśli się "Myliłem się o to):
Powiedzmy, że mam za zadanie zaimportować kanał RSS do bazy danych lub coś podobnego. Jeśli 10 użytkowników zrobi to za jednym razem, wszyscy zostaną umieszczeni w kolejce w probówce "testowej". Jednak byłyby one wykonywane tylko jeden po drugim. Czy byłoby lepiej mieć jednocześnie 10 różnych rurek?
Jeśli potrzebuję więcej lamp, czy to oznacza, że potrzebuję 10 skryptów roboczych? Jedna dla każdej tuby działa jednocześnie z zasadniczo tym samym kodem, z wyjątkiem literału ciągu znaków w funkcji watch().
Jeśli uruchamiam ten skrypt jako demon, jak to działa? Czy będzie ciągle wykonywać skrypt worker.php? Ten skrypt zapętla się, dopóki kolejka nie będzie pusta teoretycznie, więc czy nie powinno się go uruchamiać tylko raz? W jaki sposób demon decyduje o tym, jak często uruchamiać plik worker.php? Czy to tylko ustawienie?
Dzięki!
Dzięki za linki! Na pewno się tym zajrzę. Pytanie o nr 2: Jak często ten skrypt byłby wykonywany? Czy jest to całkowicie oparte na tym, jak często mój skrypt basha jest wykonywany przez demona? – joshholat
Czy jest też jakaś wygodna metoda (za pomocą fragmentu kodu lub typu "deski rozdzielczej"), aby zobaczyć, co się dzieje, itp. Z paskiem fasoli? – joshholat
większość/cała biblioteka powinna zapewniać wywołanie komend stats, list-tubes i stat-tubes. Są też inne. Nie widziałem jeszcze https://github.com/andreisavu/django-jack, ale to też może zrobić. –