Jump to content
php.lv forumi

Rindu apstrādes rīki


briedis

Recommended Posts

Nosauciet kādu, piemēru, kur reāli vajag rindas menedžeri "kā ēst"? Pats parasti izmantoju cron job. Visam pietiek.

 

Tipiskākais ir loggeris, kuram nāk log mesidži no visām vietām un viņš rindiņā visus apstrādā, pieglabā, kur vajag un paziņo, ja kaut kas nav kā vajag.

Es vēl bieži izmantoju, lai kaut ko saglabātu. Teiksim atnāk pieprasījums uz kontrolera ekšanu un tajā kaut kas jāsaglabā datu bāzē, tad nu es aizmetu mesidžu aktoram, kurš to apstrādā un noglabā, bet kontroleris var turpināt darbu un uzreiz atbildēt klientam.

Link to comment
Share on other sites

Nosauciet kādu, piemēru, kur reāli vajag rindas menedžeri "kā ēst"? Pats parasti izmantoju cron job. Visam pietiek.

 

Mums ir 2 (ar pus) serveri, kas:

1. apstrādā dažādas rindas darbus

2. ir ar dažādu jaudu (attiecīgi dažāds workeru skaits uz katrs)

3. ir +- 20 dažādi jobi, kur katram variē workeru skaits, izpildes intervāli utt.

 

Sūtam kampaņu epastus, apstrādājam attēlus, syncojam N dažādu e-veikalu datus, izpildam maksājumus, apstrādājam ienākošos webhookus, lejuplādējam failus, sūtam failus uz printeriem. Karoč, good luck to visu ar crontabu :)

 

Mums nepieciešama arī objektu lockošana, un bombīt DB visu laiku nav diez ko forši un skeilojami...

 

Ja par crontab, tad neskaitot screen procesus, uz viena servera ir padsmit, uz otra ir kkur 60 cronjobi.

 

 

Izklausās, ka izmēģināsim RabbitMQ..

Link to comment
Share on other sites

Pa lielam jūs rindas mg izmantojat, lai uzlabotu klienta responsi? Visus garos darbus nogrūžat uz backend

 

Nu jā, daudzi darbi nemaz neprasa minūtes izpildi. Iedomājies, ielādē tagad vienu failu un gaidi, kad thumbnails ģenerēsies veselu minūti. Ar workeri pāris sekundes. Un kas notiktu, kad ielādē 100, 200 failus rindā kādi 20 cilvēki...

 

Protams, ka ar cronu to var atrisināt, bet tiklīdz jāmenedžē N workeri, lai tos varēt dinamiski pielikt, noņemt, un vajag normālu atbildes laiku - nekas tur smuks nesanāks...

Link to comment
Share on other sites

while (1) {
    query("SELECT * FROM `jobs` LIMIT 1");
}
Prioritāti piekodē pats.

 

Ar PHP 7 varbūt šis jau ir lietojams, bez iespējas, ka kaut kas vienkārši apstājas bez nekāda kļūdas paziņojuma. ;)

Un bez pauzītes šis baigi noceps procesoru.

Kas notiks, ja viens jobs uzkārsies, piemēram, dēļ buga "Fatal Error: method very_rarely_if_ever_used_method() not defined"?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...