Jump to content
php.lv forumi

Skripts iedarbojas katras 10 min 1x


yeahz

Recommended Posts

yeahz --> prieks kam tev ar tiiru PHP ??

PHP ir taada lieta kaa skripta izpildes Maksimalais laiks, ja to uzliksi Maksimali lielu tad var panakt..

1.Iceko tekoso laiku:

2. palaid muzzigo ciklu

3. parbaudi vai nav pagajjusas 10 minutes ,

ir: izpildi kadu darbiibu un nomaini laiku (tekoso)

cikls turpinaas ..

---

edit: Aleksejs jau pasteidzaas :)

ahh.. biju piemirsis par sleep() :(

Edited by Grey_Wolf
Link to comment
Share on other sites

Grey_Wolf: Ir gadījumi, kad laika limits ir vajadzīgs mazāks kā 10 minūtes, bet tajā pašā laikā tam fona procesam var vajadzēt vairāk laika nekā ir tas limits. Tb var gadīties tā, ka laižot skriptu ik pa minūtei ar crontab nākamā skripta instance tiek palaista pirms iepriekšējā ir paspējusi pabeigties un tad ir SLIKTI. Tad nu nekas cits neatliek kā rakstīt vai nu php vai sh skriptu ar sleep.

Link to comment
Share on other sites

Grey_Wolf: Ir gadījumi, kad laika limits ir vajadzīgs mazāks kā 10 minūtes, bet tajā pašā laikā tam fona procesam var vajadzēt vairāk laika nekā ir tas limits.

Taa ir situacija kad kautkas tomer ar visu programmesanas logistiku ir aizgajis skersam , normalaa situacija nekad nevajadzetu buut taa ka proces jalaizj atkartoti pirms tas ir Reali beidzies ... tas jau sanak muzigais cikls --> kas savukar noziime ka nepareiza pieeja problemas risinasanai ...

--

P.S. vel saprotu ka kautkas updeitojas ik pec 10 minutem. (un arii tad taa tikai ar lielu piespiesanos)

Link to comment
Share on other sites

Ar to sleep nav tā kā biju domājis, es gribu panākt lai kad ieslēdz lapu, tur izvadās vēl palikušās sekundes līdz nākošajai atjaunošanās reizei, bet ar to sleep ir tā ka atverot lapu ir jāgaida kamēr tas noteiktais laiks paies.

 

Vārdu sakot izstāstīšu visu ko gribu panākt, varbūt ir cita metode (ir noteikti, jo pats zinu lapu kurā ir tas, ko es gribu).

 

Pieņemsim ka ir šādi cipari (tas ir defaultā un tad, ja ir šādi cipari, man nevajag lai atjaunojas ik pa noteiktajam laikam, lai vienkārši stāv kā ir):

 

$cipars1 = 100;
$cipars2 = 100;

 

Un ja pieņemsim ka cipari ir šādi tagad (šādā gadījumā es gribu lai $cipars1 ik pa noteiktajam laikam atjaunojas +1, un kad cipars ir atjaunojies, tas atkal sāk atskaiti un atkal pieskaitās +1 līdz kamēr sasniedz otro ciparu):

 

$cipars1 = 58;
$cipars2 = 100;

 

Un šim ciparam ir jāupdeitojas arī tad, kad lietotājs neskatās lapu (browseris ir izslēgts).

 

Laikam izstāstīju visu ko gribēju panākt.

Link to comment
Share on other sites

kukiji + JS

--

Lietotajam ieseto kukijos laiku (sakuma laiku)

un palaizot lapu apskatas kads laiks ir un cik laiks palicis (servera pusee) , talak ar JS skaita laiku atpakalj , kad sasniedz 0 (nu vai arii pieskaitot no teikto vertiibu), tad vienkarshi parladee lapu ..

Serveris atkal paskatiisies kaads laiks Bija Kkijos, izdariis kas jadara (palaidiis skriptu ... etc) un iesetos jaunu kukija laiku ...

aptuveni sadi ...

Link to comment
Share on other sites

Ja nemaldos, tu taisi kaut kādu web spēli, kurā jāgaida līdz resursu atjaunošanās brīdim. Ja tā nav, tad tālāko vari nelasīt.

 

To var darīt šādi - tu zini, cikos tev ir jāpalielina attiecīgais resurss par kādu vienību, tad nu to datu atjaunošanu veic php pusē bez jebkādiem background procesiem vai kā tamlīdzīga vienkārši pieglabājot resursa pieauguma tempu laika vienībās un pie nākamā pieprasījuma pārbaudot vai tas resurss nav jāpalielina.

 

Teiksim man ir resurss nauda, kas pieaug par 10 latiem katru minūti. Es saglabāju lietotāja pašreizējo naudas daudzumu, pēdējo atjaunošanas laiku un pieauguma tempu:

 

user | current_money | last_update | delta

x | 100 | 2009-02-27 14:03:00 | 10

 

Tad kad tu ielādē lapu vienkārši paskaties par cik minūtēm atšķiras last_update laiks no pašreizējā laika un par tik reizēm palielini delta vērtību un pieskaiti current_money datiem, atjauno arī last_update laiku.

 

Tas, ka lietotājs nav lapā neko nemaina - tiklīdz viņš ieradīsies, tu viņa datus pārrēķināsi. Ja tev vajag viņa datus gadījumā ja viņam kāds uzbrūk, tad pārrēķini tos arī tad.

Link to comment
Share on other sites

Liels paldies Kaklz. Bet seko nākošā problēma, redz ka ja es visu laiku neesu online, tad neatjaunojās tā informācija kā vajadzētu, viņa atjaunosies tikai tad kad es ienākšu. Problēma ir tāda ka last_update jau stāvēs visu laiku uz vietas, ja lietotājs netiek aiztikts un kad es būšu ienācis pēc stundas, tad tikai tad man atjaunosies par to vienu vienību, jo last_update ir bijis visu laiku stāvējis uz vietas, viņš nav ticis atjaunots kamēr neesu bijis (kamēr pa stundu jau vajadzēja kopā pienākt 60 vienībām(ja reizi minūtē nak viena)).

Link to comment
Share on other sites

Nevajag par vienu vienību palielināt. Kaklz tev jau teica - palielini par tik, cik ir pagājis laiks.

Citiem vārdiem skaidrojot - ja mašīna brauc 100 kilometrus stundā, un last_update ir 14:30, bet patreizējas laiks ir 16:00. Tad cik kilometrus mašīna ir nobraukusi?

Tieši tas pats tev - resurss pieaug 100 Ls/h, last_update = 14:30, now = 16:00. Tagad lietotājam ir (16:00 - 14:30) * 100 = 1.5 * 100 = 150 Ls pieaagums šajā resursā. Kā redzi ne ja par vienu vienību palielinājās, bet atkarībā no laika.

Link to comment
Share on other sites

Atvainojos par dubultpostu.

 

Vai ir kaut kāds veids kā neļaut tam skaitlim aiziet lielākam par otro skaitli?

 

Es kaut ko šādu mēģināju sataisīt, sanāca, ja pats manuāli nomainīju laiku un tad pārbaudīju, bet nezin kāpēc nestrādā tad kad es ieeju pēc, piemēram, stundas laika un tur jau tas viss ir uzkrājies vairāk nekā vajadzētu un tiek pieskaitīts.

 

			$skaitlis1 = floor(($laiks - $r['last_update_health'])/60);
		if ($skaitlis1 > $r['health_max']) {
			$skaitlis = $r['health_max']-$r['health'];
		} else {
			$skaitlis = floor(($laiks - $r['last_update_health'])/60);
		}

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...