php real time отчитане

jack

Registered
Здравейте.Опитвам се да направя една система за отчитане на постове но работеща на следния принцип:

Имаме потребители, те са записани в първата таблица users, всеки си има уникално id и някаква зададена стойност от точки;

users table
Код:
id | stoinost  |
1  |3864       |
2  |1952       |
3  |1012       |
4  |463        |

Имаме постове в posts таблицата- те си имат уникални id, имат информация за id на юзера, който ги е създал, време на създаване, както и някаква стойност.

posts table

Код:
id   | stoinostid        | lasttime            | stoinost
1    |3                  |2007-03-17 12:07:12  |25
2    |1                  |2007-03-17 13:13:56  |12
3    |1                  |2007-03-17 13:17:14  |8
4    |3                  |2007-03-17 13:38:00  |17
5    |4                  |2007-03-17 14:03:06  |18
6    |2                  |2007-03-17 15:48:51  |4
7    |2                  |2007-03-17 16:19:13  |1
8    |2                  |2007-03-18 01:13:50  |33
9    |4                  |2007-03-18 01:19:02  |15
10   |1                  |2007-03-18 11:03:50  |9



Какво целя- да си създам скрипт, който да:
пускам на всеки 5 минути примерно с кронджоб, за да изпълнява следното- отива в post таблица, взима даден запис, генерира текущо unix време, вади от него времето lasttime колонката, умножава го по стойността, и след това отива в users таблицата, намира id-то което съответсва на stoinostid от posts таблицата и вади от неговата stoinost!

е.... не е баш ламерски въпроса- все пак php е невероятен инструмент и няма само print и if else, а може да му се наложи на човек и математика да бори с него.Докъде съм се преборил аз- в документацията четох доста за unix time и го разцъках смятам няма да е проблем- взема сегашното време преправя го в минути, вадо от него lasttime записа и след като свърши присвоява на lasttime записа в таблицата сегашното време- по този начин след 5 мин като се изпълни пак скрипта ще отчете за последните 5 мин, а не 10, ако бяхем оставили първият запис без да го подмениме.Това което не мога да реализирам е как така да става, че скрипта да ... как да го кажа, да ги пречислява изчислените стойности и да ги вади точно от този в users чието id съвпада с stoinostid на самият запис... друго нещо което много ме притеснява, как би се държало дори и да ударите едно рамо и да го напишеме, как би се държало едно такова скриптче от гледна точка на ресурси- прощавайте за невежеството но на мен ми се струва доста ресурсоемко за 25 000 записа примерно на всеки 5 та билото и на 15 минути...В самата mysql заоявка предполагам че трябва да се направи с цикъл, за де се извърши действието за всички в post таблицата, а не само за определени.Не изключвам и друга възможност- това което така се постарах да ви опиша, да е неправилен начин за това което искам, а то именно е - хората имам някакви точки най-общо казано, всеки пост в зависимост от времето което стои черпи точки и то определено количество- в едната секция на форума черпи 5 точки за 5 минути, а в друг само 1 и т.н.Работата е че бих искал да го напарвя за време, а не само- постне човек и еди си колко точки му олеква акаунта...
Предварително благодаря на всички които биха ми помогнали- от логическа гледна точка и самият модел каквото можах направих и смятам, че ще работи стига да не си остане само на "хартия в чартежите" :cry:

up
хммм на никой ли не му се занимава, поне да ми даде насока някаква? постарах се възможно най-ясно да го обясна, тъй че да може човек който има позаннията поне да може да ме насочи...
 
jack каза:
up
хммм на никой ли не му се занимава, поне да ми даде насока някаква? постарах се възможно най-ясно да го обясна, тъй че да може човек който има позаннията поне да може да ме насочи...

Въпроса е много дълъг и малко хора се наемат да го четат. :)

Това с кронджоб не е добра идея.
НЕ разбрах добре какво искаш да направиш но схванах, че искаш да се отчита времето което е прекарал потребителя в форума.
Проблема е, че ти за да го засечеш трябва той да презареди страница от форума.

Може цял ден да му се любува без да презарежда и ти нямам как да разбереш.

Имам по проста идея.
Направи си една таблица отделна :

id | user_id | den | chas_minuta|
1 | 456 | 12.03.2007 | 15:32
2 | 343 | 12.03.2007 | 16.43
3 | 43 | 12.03.2007 | 16.43




Накрая на деня с една единствена заявка ще можеш с един COUNT
да разбереш кой потребител колко минути е прекарал в форума.

Ако даден потребител седи 2 часа и постоянно разглежда страници.
Той през тези два часа може да презареди 5000 пъти и 5000 записа
но униклните ще са 120 (2 по 60 мин.)

Просто ти търсиш в кои минути кой е засечен.

Ако е засечен в 320 минути от денонощието ще му дадеш 320 точки.
Ако е засечен 100 - 100 точки.

Това не изисква ресурси никакви.
Просто прави някакъв запис при всяко презареждане.
Тежката заявка ( няма да е толкова тежка) ще е на края на деня и ще е само една .

Трябва да записваш само логнатите потребители за да избегнеш записите, които не те интересуват (тези на гостите).

В веб-тоурист-а една такава таблица ще е с около 30000 записа на края на деня (което не е много) но след "раздаването" на точките трябва да се
изтрие (според мен) за да се подготви за новия ден.

Това е само идея и може да не е много добра но със сигурност не изисква ресурси и не би създавала проблеми.

Има обаче един основен проблем.

С това ще провокираш потребителите да презареждат постоянно.
Това ще натовари форума дзверски.
 
admin каза:
Това с кронджоб не е добра идея.
НЕ разбрах добре какво искаш да направиш но схванах, че искаш да се отчита времето което е прекарал потребителя в форума.
Проблема е, че ти за да го засечеш трябва той да презареди страница от форума.

Здравей.Да ти кажа.... чак неудобно ми стана- отделил си от времето си и си ми писал найстина при все че ми е така овъртяно питането, обаче тези съвети...- целта ми е да отчитам НЕ колко време е стоял даден потребител, а колко време са стоели Постовете му.Всеки потребител си има в акаунта брой "точки", в зависимист от това колко поста има И кoлко време стоят във форума точките му намаляват.Аз и това изрично споделих- не е така просто- след публикуване просто да се вади някаква стойност от акаунта му, а ме интересува да може да се напарви тъй че един негов пост престоял един месец теоретично да му изхаби точките, както би станало ако някой публикува 30 различни поста с продължителност едно денонощие.Тази система може да ви се струва странна, но съм си наложил просто, че трябва да я проектирам, а идеята е сайт за новини, НО реален в най-пълният смисъл на думата- в един digg.com примерно нещата си оставата там, трупат им с рейтинги и прочие, а на мен ми се иска тази система да кара хората да поддържат само най-новите и актуални неща ( молбята ми е само, да не се хванете сега за това и да започнете критиките за един такъв сайт- аз ги знам, на фокус е реализацията на пхп скрипта )
 
Значи аз днеска се сетих по пътя за това какъв съвет ти дадох и схванах, че може да се направи по друг начин.

Вече няма значение защото ти не си искал това.
Проблема е, че аз в момента няма идея какво искаш.
Разбрах, че ако даден човек напише нещо във форума и то стои
1 ден ще му се изхабят $n брой точки.

Първо трябва да обясниш какво е "стои".
Един пост стои "за винаги" ако не го изтриеш.

Наистина не разбирам системата и няма как да мога да помогна.
етох няколко пъти постовете ти но нищо не разбрах и се обърках.
 
admin каза:
Значи аз днеска се сетих по пътя за това какъв съвет ти дадох и схванах, че може да се направи по друг начин.
Ами... да не е с постове във форум, най-близката идея е- представи си платен сайт за обяви- всяка обява струва по 1лв на ден.Ти имаш сметка от 30лв- можеш да пуснеш една обява за 30 дена с тези пари или 10 обяви за по три дни, след което сметката ти става на 0- това е.имаш акаунт във който имаш точки, всеки твой пост взима от тях в зависимост от това колко време е престоял преди да го делнеш.
 

Back
Горе