Laravel background jobs

Ама аз на delay му подавам просто секундите които искам да изчака. Това което не мога да разбера е как ще знам колко секунди са минали във всеки един момент и какво точно трябва да запиша в redis?
 
Секундите, които трябва да изчака, са ти секундите за построяване на сградата. Същите секунди трябва да ги използваш за брояча. Просто трябва да ги записваш някъде при определен евент(да речем играча е излязал от играта нацяло, играча е отишъл на друга страница). Идеята е да засечеш времето между когато потребителя е бил на страницата и потребителя не е бил на страницата(където върви таймера), за да можеш да изчислиш после правилно оставащото време и съответно, ако е по-голямо от времето за построяване на сградата, това значи, че е построена, иначе таймера продължата от където е стигнал след последния запис.

Според мен остави за сега Редис, защото е прекалено сложен за теб на този етап.

Ако искаш си използвай за сега MySQL, направи си една таблица, в която да записваш тези данни и готово.

Напъни се малко повече. Записвай си на листче. Нали идеята е да се научиш. Трябва да те накараме да започнеш да мислиш логически, иначе каква е файдата, ако ти даваме изцяло отговорите.
 
Не мога да разбера защо е този delay...
Ако на мен ми се налагаше да правя подобно нещо, бих си направил една таблица, където да слагам задачите за строене на сградите. Там имам building_id, start_date, end_date. Когато си взимам сградите от основната таблица, която държи сградите на юзърите, просто проверявам за накакъв флаг, който показва дали сградата е завършена... ако не е, взимам оставащото време от таблицата със задачите и готово.
Правя си един Cron, който да минава и да зачиства през определен интервал, в случай, че има нещо за чистене. Няма delay, няма нищо...
 
pix3l каза:
Не мога да разбера защо е този delay...
Ако на мен ми се налагаше да правя подобно нещо, бих си направил една таблица, където да слагам задачите за строене на сградите. Там имам building_id, start_date, end_date. Когато си взимам сградите от основната таблица, която държи сградите на юзърите, просто проверявам за накакъв флаг, който показва дали сградата е завършена... ако не е, взимам оставащото време от таблицата със задачите и готово.
Правя си един Cron, който да минава и да зачиства през определен интервал, в случай, че има нещо за чистене. Няма delay, няма нищо...

Точно това се случва. Стартира се queue, което трябва да се изпълни с delay което е времето за построяване на сградата. Вместо ръчно да правиш таблицата, Ларавел си прави таблица за тази цел за queue. Така лесно се процесват всякакви queue-та. Ако имаш 200 поребителя строящи сгради, всяко ще си знае кога трябва да се изпълни, без това да пречи на работата на другите.
 
Изобщо си нямах идея, че има такова нещо в Laravel. Ако ми падне подобна задача, вече ще знам къде да търся. :D
 
Queues, Task Scheduling, Notifications, Broadcasting... все удобни неща.

Удобно е, защото голяма част, която трябва да правиш ти, е вече имплементирана във фреймуорка.
Колкото повече се познава един фреймуорк, толкова по-функционален става от това да се използват само качествата му на MVC(или какъвто там дизайн използва).

Ако не ползвах Ларавел и аз бих ползвал ръчен подход на този етап от знанията ми. Едно време нещата бяха доста по-зле :D
 
Аз за това викам, че ще знам за напред. Не съм писал нищо на Laravel, само бях прелистил документацията няколко пъти, докато още беше Laravel 4 и се отказах. Изглежда има интересни неща да предложи. Може пак да прелистя документацията, ако ми остане свободно време. :D
 
Направих всичко, сложил съм и рефреш на страницата след като изтече времето за да се обнови информацията, обаче дава разлика във времето на queue-то и javascript таймера. За това добавих и един setTimeout, който забавя рефреша с две секунди за да е всичко точно. Обаче тука изникна един проблем. Ако рефрешвам ръчно страницата времето на setTimeout се натрупва. Например ако рефрешна четири пъти докато таймера още не е спарял, вместо две секунди чакам осем за да се рефрешне страницата автоматично.

Някакви идеи?

PHP:
// jsNum е времето което трябва да забави преди reload и е 2 сек. но се натрупва ако рефрешвам ръчно.
var timeoutHandle = window.setTimeout(location.reload.bind(location), jsNum);
$('div#clock').countdown(goldMineTime).on('stop.countdown', timeoutHandle);
 
Струва ми се, че ще е по-удобно да пуснеш новия въпрос в друга тема и да кажеш откъде идва тази променлива (от сървъра, много ясно, по-скоро скриптът, който я дава)

В противен случай единствено Revelation ще може да ти отговори :p
 
Най-добре да си пусне въпроса в нова тема, че тази стана боза. Ако решиш да търсиш назад какво се е случвало, е много тегаво.

Иначе в новата тема ми отговори за какво забавяне говорим. Каква е разликата?
 
Revelation каза:
Най-добре да си пусне въпроса в нова тема, че тази стана боза. Ако решиш да търсиш назад какво се е случвало, е много тегаво.

Иначе в новата тема ми отговори за какво забавяне говорим. Каква е разликата?

Бате, имаш железни нерви, евала! :D
 
С времето се учиш. Имам няколко баннати акаунта. :D :D

Сега просто си подбирам на кого да отговарям. Терориста поне се старае с минимално даден код да се справи, за това му помагам.
То иначе времето, което отделям за големите постове, сигурно ще ми отнеме толкова и да му напиша примерите. :D :D
 
anonimen каза:
Струва ми се, че ще е по-удобно да пуснеш новия въпрос в друга тема и да кажеш откъде идва тази променлива (от сървъра, много ясно, по-скоро скриптът, който я дава)

В противен случай единствено Revelation ще може да ти отговори :p

Ок, не че и другата тема няма да стане същата :D.
 

Горе