kostenloser Webspace werbefrei: lima-city


PHP-Function regelmäßig ausführen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fockolino

    Kostenloser Webspace von fockolino

    fockolino hat kostenlosen Webspace.

    Ich hätte da eine Frage:
    wie ungefähr muss der code lauten, wenn eine Funktion alle paar sekunden regelmäßig ausgeführt werden soll, z.B. zum aktualisieren der angezeigten Informationen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Welche Funktion willst du denn so oft aufrufen und zu welchem Zweck? Was stört es, wenn die Funktion seltener aufgerufen werden würde, z.b. alle Minuten oder so?

    Möglichkeiten gibt es natürlich, angefangen von »mit JavaScript aufrufen« bis hin zu »Cronjob«, je nachdem worum es sich handelt und welche Möglichkeiten dir zur Verfügung stehen.

    Beitrag zuletzt geändert: 3.4.2013 14:54:01 von hackyourlife
  4. Autor dieses Themas

    fockolino

    Kostenloser Webspace von fockolino

    fockolino hat kostenlosen Webspace.

    am besten sollte die funktion alle paar sekunden ausgeführt werden
    ich hoffe, das ist möglich
    am besten mit PHP
  5. Das klingt wirklich nach schlechtem Design.
    Was willst du damit erreichen? Es gibt sicherlich Möglichkeiten das weniger stressig für dich und vorallem den Server zu realisieren. ;)

    PHP ist nicht wirklich für sowas gedacht fürchte ich. Es wäre sicher möglich aber naja...


    Rück erstmal raus damit, was du genau erreichen willst. Dann sehen wir weiter.
  6. Autor dieses Themas

    fockolino

    Kostenloser Webspace von fockolino

    fockolino hat kostenlosen Webspace.

    ich hatte gedacht, ein chat als übungsprogramm zu schreiben,
    das habe ich auch schon gemacht, aber wenn zwei auf der seite sind, werden neue einträge erst angezeigt, wenn die php-seite neu-geladen wurde
    ich würde es gerne haben wenn das programm alle paar sekunden überprüft, ob eine neue nachricht vorhanden ist
    ich hoffe da gibts ne gute möglichkeit
  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Mehrere unterschiedlich komplexe Möglichkeiten für deinen Chat:

    1) Statisches HTML + Frames
    Ein Frame am unteren Rand = Eingabeleiste für die Eingabe der Nachricht, ein weiteres Frame nimmt den restlichen Platz ein und lädt immer wieder (per meta-Tag) neu. Diese Variante kommt ohne JavaScript aus, ist aber entsprechend Resourcenlastig und langsam (und technisch veraltet).

    2) Polling mit JavaScript
    Du fragst mit JavaScript alle paar Sekunden den Server ab, ob etwas neues gekommen ist. Dazu nutzt du z.B. XMLHttpRequests.

    3) fortgeschrittenere Techniken
    WebSockets, Long-Polling, …, nur um ein paar Möglichkeiten zu nennen, wie man so einen Chat wirklich bauen würde.

    Punkt 2 ist das, was dich interessieren wird.
  8. Autor dieses Themas

    fockolino

    Kostenloser Webspace von fockolino

    fockolino hat kostenlosen Webspace.

    können sie mir vielleicht mal ein beispiel geben? ich habe nämlich noch nie mit XMLHttpRequests gearbeitet. einfach einen codeausschnitt für die abfrage oder so.

    ich versuch mich mal mit:
    http://www.webdeveloper.com/forum/showthread.php?169337-Auto-refresh-lt-DIV-gt-using-ajax

    mit setTimeout(), ajax und so...

    aber wenn jemand ne bessere möglichkeit kennt, bin ich offen für vorschläge

    Edit by burgi: Beiträge zusammengefügt

    Beitrag zuletzt geändert: 24.5.2013 23:41:19 von burgi
  9. Beispiel mit jQuery

    <html>
    <head>
    <title>TEST</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    
    <script type="text/javascript">
    
    var seconds = 5;    // --- Gesamt Reload-Dauer in Sekunden
    var mdelay = 1000;  // --- Dauer der fadeIn/Out Animation 
    
    var milisec = ((seconds*1000) - (mdelay*2)); 
    
    var auto_refresh = setInterval( function() { 
      $('#loaddiv').fadeIn(mdelay).load('reload1.php').delay(milisec).fadeOut(mdelay).empty(); 
    }, 5000);
    
    
    $(document).ready(function(){ 
      $('#loaddiv').fadeIn(mdelay).load('reload1.php').delay(milisec).fadeOut(mdelay).empty(); 
    }); 
    
    </script>
    
    
    <style type="text/css">
    <!--
    
    body { 
      background: #FFFFFF; 
      color: #000000;
    }
    
    #loaddiv { 
      font-family: "Times New Roman", Times, serif; 
      font-size: 22px; 
      color: #003366;
      text-align: center; 
      margin: 0 auto; 
      padding: 8px; 
      width: 60px; 
      height: 30px; 
      background: #AACCFF; 
      border: 1px solid #33AA00; 
    }
    -->
    </style>
    
    </head>
    
    <body>
    <br>
    
    <div style="text-align: center;">
    <div style="margin: 0 auto; padding:6px; width:90px; height:50px; background:#AAFF99;">
      <div id="loaddiv">&nbsp;</div>
    </div>
    </div>
    
    <br>
    </body>
    </html>


    Datei: reload1.php

    hier die PHP-Funktion rein ... im BSP wird eine Zufalls-Zahl zwischen 0 und 1000 ausgegeben)


    <?php 
    
    $randid = rand(0,1000); 
    
    echo $randid; 
    
    ?>


    nur so als Idee ... mit jQuery


    Beitrag zuletzt geändert: 5.4.2013 20:23:26 von keyrank
  10. Autor dieses Themas

    fockolino

    Kostenloser Webspace von fockolino

    fockolino hat kostenlosen Webspace.

    danke für den code,
    aber ich bin mir nicht ganz sicher ob es absicht ist, dass die Zahl nicht verändert wird
    ich habe es bei mir ausprobiert, und es kommt immer die gleiche zahl.

    so wie ich den code verstehe, müsste doch eigentlich alle 5 sek eine neue zahl geschrieben werden oder?
    kann mich da mal jemand aufklären?

    ---

    komisch auf meinem laptop hats jetzt geklappt, wie ichs vermutet habe

    ---

    das liegt an scheinend am browser: bei Opera funktionierts, bei Firefox nicht
    weiß jemand vielleicht wie man es auch auf Firefox zum laufen bringt?

    Beitrag zuletzt geändert: 7.4.2013 12:20:36 von fockolino
  11. also ich habe den Code auch mal ausprobiert,
    bei mir klappt es (alle 5 Sekunden neue Zahl)
    sowohl im FF als auch im IE

    hast Du evtl. JavaScript deaktiviert an Deinem Computer ?

    oder hat Dein Browser / Webspace Cacheing aktiviert ?

    Cacheing am Webspace "deaktivieren" kannst Du über .htaccess

    Header set Cache-Control "must-revalidate, no-store, no-cache, max-age=0, pre-check=0, post-check=0"
    Header set Pragma "no-cache"


    Es geht auch ohne jQuery (obwohl das nicht schlecht ist)

    .... direkt mit Ajax ... jetzt mal alle 3 Sekunden

    <html>
    <head>
    <title>TEST</title>
    
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    
    <script type="text/javascript">
    
    function ajax_reload() {
    	var xmlhttp;
    	
    	if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); }
    	else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
    	
    	xmlhttp.onreadystatechange=function() { 
    		if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
    			document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    		}
    	}
    	
    	var millisec = new Date().getTime();
    	
    	xmlhttp.open("GET","reload1.php?ms=" + millisec + "",true);
    	xmlhttp.send();
    }
    
    // ----- set refresh-time in seconds
    var seconds = 3; 
    
    // ---- convert to milliseconds 
    var runinms = (seconds*1000); 
    
    // ----- refresh after xxx (milli-)seconds 
    var set_interval = setInterval( ajax_reload, runinms);
    
    // ----- first run when document is ready 
    window.onload = ajax_reload; 
    
    
    </script>
    
    
    
    <style type="text/css">
    <!--
    
    body {
    	background: #FFFFFF;
    	color: #000000;
    }
    
    #myDiv {
    	font-family: "Times New Roman", Times, serif;
    	font-size: 22px;
    	color: #003366;
    	text-align: center;
    	margin: 0 auto;
    	padding: 8px;
    	width: 60px;
    	height: 30px;
    	background: #AACCFF;
    	border: 1px solid #33AA00;
    }
    -->
    </style>
    
    </head>
    
    <body>
    
    <br>
    <br>
    
    <div style="text-align: center;">
    	<div style="margin: 0 auto; padding:6px; width:90px; height:50px; background:#AAFF99;">
    		<div id="myDiv">&nbsp;</div>
    	</div>
    </div>
    
    <br>
    <br>
    
    </body>
    </html>


    das Anhängen der Millisekunden mit GET Parameter (hier: "?ms=") an reload1.php
    bewirkt, dass jeder Aufruf eine eindeutige URL ist, um evtl. Cacheing zu verhindern

    ist quasi eine Alternative zur Cache-Vermeidung
    zu dem oben genannten Eintrag in eine .htaccess Datei



    Beitrag zuletzt geändert: 7.4.2013 11:37:20 von incdesign
  12. Autor dieses Themas

    fockolino

    Kostenloser Webspace von fockolino

    fockolino hat kostenlosen Webspace.

    ich habs jetzt mal mit EXTRAS, EINSTELLUNGEN, ERWEITERT und dann den cashe auf 0 begrenzt, das hat geklappt

    danke.

    PS: wo müsste denn die .htaccess-Datei hin?

    Beitrag zuletzt geändert: 7.4.2013 17:11:43 von fockolino
  13. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    fockolino schrieb:
    PS: wo müsste denn die .htaccess-Datei hin?
    In den gleichen Ordner wie die Dateien die nicht gecached werden sollen. Allerdings gilt diese .htaccess-Datei dann auch für alle Dateien in allen Unterordnern…
  14. Autor dieses Themas

    fockolino

    Kostenloser Webspace von fockolino

    fockolino hat kostenlosen Webspace.

    mit der .htaccess-Datei klappts jetzt auch ohne die cashbegrenzung.
    nochmal danke.

    PS: kann vielleicht mal jemand einen link posten, wo man noch so andere befehle für .htaccess findet

    Beitrag zuletzt geändert: 7.4.2013 21:33:45 von fockolino
  15. Das heißt immer noch 'cache' und nicht 'cash'.
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!