php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 05-05-2011, 12:13
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard Datenbank jede Sekunde aktualisieren ?

Hallo zusammen,

ich habe ein großes Problem. Ich habe ein JavaScript, was eine Datei von mir jede Sekunde aktualisiert, wobei in dieser Datei ein Datenbankeintrag gemacht wird. Das funktioniert super:

Code:
<script type="text/javascript" language="javascript">window.setInterval("javascript:resourcesupdate() ",1000);</script>
Code:
<div class="resourceBox"  id="boxResMetal" onclick="window.location.href='/resourceInfo.php?show=storages';"><span id="update">...</span></div>
Code:
<script src="nachladen.js" type="text/javascript"></script>
nachladen.js
Code:
function resourcesupdate() {
    new Ajax.Updater("update", "testmitdatei.php");
}
Problem an der ganzen Sache ist, dass man den Code im Quelltext sehen kann. Sobald ein user diese Datei aufrufen würde, und immer F5 drückt wird die Zahl immer mehr hochgepusht.

Gibt es eine möglichkeit den Code so zu schreiben, dass man nicht den Namen der Datei sehen kann, bzw. ein Script, der einen Datenbankeintrag macht, den User nicht sehen können ?

Ich stehe gerade ein bisschen auf dem Schlauch und wüsste nicht wie ich das realisieren könnte.

Vielen Dank und LG

TheMan
Mit Zitat antworten
  #2 (permalink)  
Alt 05-05-2011, 12:17
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Welche Adresse du vom Client aufrufen lässt, lässt sich immer in Erfahrung bringen.

Du könntest in so einem Fall höchstens vom Server ein Token generieren lassen, mit dem jeweils nur ein Eintrag möglich ist - für den Nächsten braucht es dann wieder ein neues Token, usw. usf.

Dass Requests in dieser Frequenz nicht besonders gut für die Performance sind, insb. wenn die Nutzerbasis mal breiter wird, muss hoffentlich nicht noch extra erwähnt werden.

Was du eigentlich damit erreichen willst, könntest du auch mal beschreiben.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 05-05-2011, 12:27
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard

Hi,

also der Datenbankeintrag sieht so aus, dass dort pro Sekunde ein Eintrag mit z.B. +4 ist. Die Zahl wird pro Sekunde also immer erhöht.

Ruft der User aber die Datei selbst und drückt F5 zum aktualisieren, so kann man die Datenbank manipulieren. Das soll aber ausgeschlossen werden.

In dieser Datenbank werden die Einträge direkt für z.B. 10 User gemacht. Heißt also 10 Einträge / Sekunde. Das hält eine Datenbank ja aus. Was passiert, wenn es dann bis zu 10000 sind, weiß ich nicht. ( Habe einen Root Server)

Bei mir geht es um ein Browsergame, wo der User pro Sekunde Ressourcen bekommt, bis zu einem maximum von bsp. 10.000 Rohstoffen.

Daher soll ja auch die Datenbank immer aktualisiert werden und die aktuelle Zahl ausgegeben werden.

Kann man sowas nicht auch mit Ajax machen ? Es geht sich eigentlich nur darum, dass man das eintragen der Zahlen nicht beeinflussen kann (als User)....

Vielleicht kennt ja einer ein Lösungsweg um es so einfach wie möglich zu machen, sodass der Server auch nicht ganz ausgelastet wird.

Danke =)
Mit Zitat antworten
  #4 (permalink)  
Alt 05-05-2011, 13:10
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Deamon/CronJob Prozess zur Rohstoffverwaltung?

JS übernimmt nur die Anzeige. und die Übertragung von Veränderungen.
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #5 (permalink)  
Alt 05-05-2011, 13:17
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard

Das ist eigentlich eine gute Idee =) Daran hab ich garnicht gedacht es so zu machen. Danke.... werd ich gleich mal ausprobieren.

Nur noch eine kleine Frage. Wie lese ich dann den Datenbankeintrag jede Sekunde aus und lasse Ihn dann anzeigen ?

Sodass dann auch nicht, nach einem aktualisieren der Seite die "..." erst stehen und nach einer Sekunde dann erst die Zahl. Sondern, nach dem aufrufen der Seite die Zahl direkt angezeigt wird ?

Bei fast allen Browsergames wird die Zahl sofort angezeigt.

Danke dir nochmal für den "Denk"anstoß =)
Mit Zitat antworten
  #6 (permalink)  
Alt 05-05-2011, 13:27
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Wozu willst du jede Sekunde die Datenbank auslesen? Die Datenbank musst du nur dann lesen/beschreiben, wenn der Benutzer aktiv etwas macht. Denn nur dann ändert sich was.

Für irgendwelche Zähler, die im Client mitlaufen, kannst du JavaScript verwenden. Aber dafür brauchst du keine Datenbank.
Mit Zitat antworten
  #7 (permalink)  
Alt 05-05-2011, 13:28
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard

Die Daten müssen doch irgendwo gespeichert werden ?! Und dafür nutze ich die Datenbank.

Der User bekommt jede Sekunde 4 Punkte dazu. Und das muss doch gespeichert werden....
Mit Zitat antworten
  #8 (permalink)  
Alt 05-05-2011, 13:29
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

einfacher geht es nun wirklich nicht.
Js ajax anfrage an eine z.b. php Datei die nichts anderes tut als mit dem Usertocken die Datenbank nach bestimmten Feldern zu fragen obwohl jede Sekunde auch ziemlicher Müll ist.

Z.b. Rohstoffe xyz werden zum Bau benötigt um diese Rohstoffe anzusammeln braucht es eine c zeit sagen wir 60 Sekunden oder 15 Sekunden. in der Zeit hat der Deamon schon den vermerk gemacht x Rohstoffe angesammelt.
Das Skript führt dann den Auftrag nach 60 Sekunden aus. alternative
du lässt 2 Skirpte laufen. eins das auf dem Client die Ansammlung Simuliert und die Daten alle 60 Sekunden mit den echt Daten in der DB abgleicht und falls eine Differenz auftaucht diese dann am Client updatet.

es währe sowieso besser auch für die Performance des Ressourcen Management diese auf 60 Sekunden oder mehr hoch zu setzen also anstelle von 1 Sekunde 4 Rohstoffe.

zur frage.

die Daten Direkt bei der Generierung laden? also den aktuellen Startwert.

Btw. kann man sich dieses BG irgendwo ansehen?
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #9 (permalink)  
Alt 05-05-2011, 13:31
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TheMan1990 Beitrag anzeigen
Die Daten müssen doch irgendwo gespeichert werden ?! Und dafür nutze ich die Datenbank.

Der User bekommt jede Sekunde 4 Punkte dazu. Und das muss doch gespeichert werden....
Nein, muss nicht. Das kannst du dann berechnen und speichern, wenn der Benutzer aktiv etwas macht. Denn nur dann ist es relevant. Welche Werte zwischen den Aktionen in der Datenbank stehen ist irrelevant, weil die der Benutzer nicht sieht.

Wie gesagt, für Echtzeitanzeige gibt es JavaScript.
Mit Zitat antworten
  #10 (permalink)  
Alt 05-05-2011, 13:41
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Nein, muss nicht. Das kannst du dann berechnen und speichern, wenn der Benutzer aktiv etwas macht. Denn nur dann ist es relevant. Welche Werte zwischen den Aktionen in der Datenbank stehen ist irrelevant, weil die der Benutzer nicht sieht.
Hi,

nur wie soll das funktionieren, bzw. kannst du mir ein Condebeispiel zeigen, wie ich das realisieren kann ?

Der Ansatz reicht ja schon, nur ich kann mir im Mom nicht vorstellen, wie das funktionieren soll.
Mit Zitat antworten
  #11 (permalink)  
Alt 05-05-2011, 13:55
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard

@Wyveres

Wie gerade schon geschrieben, weiß ich nicht wirklich, bzw. den Ansatz davon, wie ich das realisieren kann.
Mit Zitat antworten
  #12 (permalink)  
Alt 05-05-2011, 13:57
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TheMan1990 Beitrag anzeigen
Hi,

nur wie soll das funktionieren, bzw. kannst du mir ein Condebeispiel zeigen, wie ich das realisieren kann ?

Der Ansatz reicht ja schon, nur ich kann mir im Mom nicht vorstellen, wie das funktionieren soll.
Du speicherst den Zeitpunkt, an dem der Wert zuletzt verändert wurde. Aus der Differenz zwischen aktuellem und gespeicherten Zeitpunkt kannst du dann ausrechnen, wieviel du addieren musst.

Also angenommen ein Wert wird pro Sekunde um 4 Punkte erhöht. Der letzte Zugriff war vor 3 Minuten, dann musst du 3 * 60 * 4 Punkte addieren um den aktuellen Wert zu erhalten.
Mit Zitat antworten
  #13 (permalink)  
Alt 05-05-2011, 14:05
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard

Danke schonmal dafür....

Und bei genau welcher Aktion soll dann das Script ausgeführt werden ? Und es muss ja immer aktuell zu sehen sein (live) wie viele Punkte derjenige hat.

Die Punktzahl soll ja jede Sekunde aktuell bleiben.
Mit Zitat antworten
  #14 (permalink)  
Alt 05-05-2011, 14:07
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TheMan1990 Beitrag anzeigen
Und bei genau welcher Aktion soll dann das Script ausgeführt werden ?
Jedesmal, wenn der Wert abgefragt wird. Also zB. wenn der Benutzer auf irgendwas klickt und dadurch die Seite neu geladen wird.

Zitat:
Zitat von TheMan1990 Beitrag anzeigen
Und es muss ja immer aktuell zu sehen sein (live) wie viele Punkte derjenige hat.
Dafür kannst du JavaScript verwenden.

Zitat:
Zitat von TheMan1990 Beitrag anzeigen
Die Punktzahl soll ja jede Sekunde aktuell bleiben.
Ja, für den Benutzer. Aber dem Server und in Folge der Datenbank kann das egal sein.
Mit Zitat antworten
  #15 (permalink)  
Alt 05-05-2011, 14:13
TheMan1990
 Registrierter Benutzer
Links : Onlinestatus : TheMan1990 ist offline
Registriert seit: Jun 2009
Beiträge: 22
TheMan1990 befindet sich auf einem aufstrebenden Ast
Standard

Naja die Seite wird andauernd neu geladen. Wenn man überall hin und her klickt, muss das script immer ausgeführt werden. Und dann der Wert geändert werden....

Ich werde das mal irgendwie ausprobieren... Hab zwar noch keine Ahnung wie ich das ins Script einbauen werde, aber ich versuch es mal ^^
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie kann ich ein Script sich jede Sekunde selber aufrufen lassen (Schleife)? HansDerLange PHP Developer Forum 7 13-06-2008 17:23
Datum und Zeit in Datenbank nicht aktualisieren tobydom PHP Developer Forum 5 03-02-2008 16:35
Datenbank aktualisieren Now Apps und PHP Script Gesuche 8 20-10-2003 22:31
Eintrag in Datenbank suchen und aktualisieren... Metallica PHP Developer Forum 13 26-11-2001 18:21
Per Link die Datenbank aktualisieren ! Darius SQL / Datenbanken 13 14-11-2001 09:22

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:08 Uhr.