Toon posts:

[PHP] Cronjobs hoe integreer ik dit in de site *

Pagina: 1
Acties:
  • 65 views sinds 30-01-2008

Verwijderd

Topicstarter
Beste mensen,

Ik heb een zeer goed draaiende profielensite. www.yourprofile.nl alleen op dit moment is de site tijdelijk offline omdat de hosting vind dat we crownjobs moeten gebruiken voor pagina's waar veel scripts inzitten. Zoals de index.php en de lid.php.

Aangezien ik en de andere 2 scripters hier totaal geen ervaring mee hebben, komen we er dus niet uit. Dit betekend dat de site offline blijft, omdat me hosting zegt dat die door yourprofile veel load krijgt en dat dan ze server crasht. Zolang dit niet gebeurd volgens hem blijven we offline.

Aangezien ik dit niet kan maken tegenover members, wil ik jullie vragen om mij een handje te helpen.

Ik wil de volgende dingen weten.

hoe je het resultaat van een crown job automastisch op de site krijgt
zonder elke tien minuten de site aan te passen
Hoe ze werken
Hoe je ze moet instellen.


Ik hoop dat iemand ons een handje kan helpen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:50

gorgi_19

Kruimeltjes zijn weer op :9

Zoek om te beginnen eens op cronjobs ipv crownjobs.

Met google levert dit http://www.aota.net/Script_Installation_Tips/cronhelp.php3 op :)

[ Voor 47% gewijzigd door gorgi_19 op 13-10-2004 13:11 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 08:08

Tjark

DON'T PANIC

Als je eens zoekt op 'cron job' ipv crown.

[ Voor 17% gewijzigd door Tjark op 13-10-2004 13:11 ]

*insert signature here


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

[google="cronjobs howto"]

Het is namelijk cronjobs, zonder w :). Het zijn eigenlijk Linuxscriptjes die je op een bepaalde tijd kan laten uitvoeren. Als jij met een cronjob een scriptje uit laat voeren die een static page genereert zal de serverload waarschijnlijk wel een stuk lager zijn.

[ Voor 6% gewijzigd door AtleX op 13-10-2004 13:12 ]

Sole survivor of the Chicxulub asteroid impact.


  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 17-05 20:41

R4NCOR

eigenlijk gewoon Niels

een cronjob is in principe te vergelijken met een scheduled task op je windows machine. :)

Eens in de zoveel tijd roept zo'n ding een programmaatje of commando aan. Als je het zo instelt dat eens in het uur je php file geparsed wordt, dan heb je het voor elkaar toch? :) Als er bepaalde output van dat script is, gewoon een html'tje van maken oid, en de bezoekers daar heen sturen in plaats van je php-files. (Die mogen dus alleen nog worden aangeroepen door je cronjob :) )

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:50

gorgi_19

Kruimeltjes zijn weer op :9

maar erhm... 8)7

Wat is de relatie tussen veel scriptcode in een pagina en een cronjob, normaliter? :? Statische pagina's maken? En wat trekt de load? Waar zit de bottleneck? Welk gedeelte van de code?

[ Voor 33% gewijzigd door gorgi_19 op 13-10-2004 13:14 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

Dan moet je het overigens wel aardig bont gemaakt hebben met die pagina's :P

Als je niet weet wat cronjobs zijn dan zou ik eerst eens kijken of je pagina's niet gewoon beter te optimaliseren zijn (nofi)

Probeer het aantal queries zoveel mogelijk in te perken en duik eens goed in de wereld van indices :)

[ Voor 21% gewijzigd door Bosmonster op 13-10-2004 13:14 ]


  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 17-05 20:41

R4NCOR

eigenlijk gewoon Niels

gorgi_19 schreef op 13 oktober 2004 @ 13:13:
maar erhm... 8)7

Wat is de relatie tussen veel scriptcode in een pagina en een cronjob, normaliter? :?
Ach, als zo'n php-file elke minuut 2 keer wordt opgevraagd, en er zitten wat zware sql-queries in bijvoorbeeld.. :P Dan is het wellicht handiger om het zware werk via cronjobs te doen, zodat ze niet zoveel load veroorzaken? :P Maarja, dan moet je wel zorgen dat je script z'n functionaliteit blijft behouden ;)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:50

gorgi_19

Kruimeltjes zijn weer op :9

R4NCOR schreef op 13 oktober 2004 @ 13:14:
[...]

Ach, als zo'n php-file elke minuut 2 keer wordt opgevraagd, en er zitten wat zware sql-queries in bijvoorbeeld.. :P Dan is het wellicht handiger om het zware werk via cronjobs te doen, zodat ze niet zoveel load veroorzaken? :P Maarja, dan moet je wel zorgen dat je script z'n functionaliteit blijft behouden ;)
mja, gruwelijk zware sql statements heb je normaliter niet in je index pagina zitten. Desnoods ga je de outputresultaten cachen oid.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Modbreak:Als je nu komt om mensen te vragen die dit op deze manier kunnen oplossen, dan zit je verkeerd en gaat het topic dicht :)

[ Voor 255% gewijzigd door gorgi_19 op 13-10-2004 13:17 ]


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 18:37
Waarschijnlijk bedoel je cronjobs. Dat houdt eens in de X minuten een bepaald scriptje uitvoert. Jouw hoster zal hiermee willen bereiken dat jouw frontpage gecached gaat worden...

Dus in plaats van het runnen van de volledige code bij elke user die je site bekijkt laat je bijv 1x in de 10 minuten een ge-update frontpage genereren middels een cronjob. Deze statische file voer je dan aan je users. Er zijn ook wel andere methoden dan cronjobs om dit te bereiken. Simpel iets als dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*index.php*/
$time = date("U");

$last_cached = mysql_query(); //haal laatste cache ergens vandaan, bijv database

if ($time > $last_cached + $cacheinterval)
{
## parse page ##

## store output in Cache.php ##
} else {

include 'Cache.php';

}

offtopic:
Damn ik ben traag...

[ Voor 6% gewijzigd door T-MOB op 13-10-2004 13:20 ]

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Sorry zal niet meer gebeuren.

  • Skaah
  • Registratie: Juni 2001
  • Niet online
Ik heb een goed humeur: hier is een cache-class.
Zet bovenaan je pagina
PHP:
1
2
require('dotcachehandler.class.inc.php');
dotCachehandler::start();

En onderaan
PHP:
1
dotCachehandler::stop();

Dit is dotcachehandler.class.inc.php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
// Caches hier opslaan:
define('DP_CACHE_FOLDER','c:/windows/temp');
// Tijd dat een cache geldig is, in seconden
define('DP_CACHE_TTL',10);

/**
 * Enables basis caching of pages.
 * Note: you can use this class only to cache the output buffering. To cache
application or session wide, you need other classes (dotAppCache and 
dotSessionCache).
 *
 * @author         Willem Stuursma <w.j.stuursma@student.rug.nl>
 * @access         public
 * @package        .PHP (Framework)
 * @subpackage     dotCacheHandler
 * @version        1.0.0
 * @since          1.0.1
 */

class dotCacheHandler // extends dotPHP
{
        /**
         * Make a unique ID for a page.
         * This takes the request URI, and all $_REQUEST variables in account.
         * @access private
         * @version 1.1
         * @since 1.0.0
         * @access public
         * @return string
         */
        function uid()
        {
                return md5(
                        serialize($_REQUEST) .

                        $_SERVER['REQUEST_URI']
                        );
        }

        /**
         * Handle the caching.
         *
         * @access public
         * @version 1.1
         * @since 1.0.0
         * @return void
         */
        function start()
        {
                $file = implode('/',array(DP_CACHE_FOLDER,dotCacheHandler::uid()));
                    // controleer of deze pagina ooit al gecached is
                    // en controleer de laatst bijgewerkte tijd
                if (file_exists($file) && filemtime($file) > time() - DP_CACHE_TTL)
                {
                        // er is een (geldige) cache van dit bestand.
                        // lees het bestand in...
                        readfile($file);
                        // en stop maar.
                        die();
                }
                else
                {
                        // Het bestand is oud!
                        ob_start();
                        if (file_exists($file))
                        {
                                touch($file); // Touch, zodat er het weer
// als nieuw is en er geen twee keer
                        }                     // een pagina opgebouwd wordt.
                        define('DP_CACHEHANDLER_MAKE',true);
                }
        }

        /**
         * Create a cache-file.
         * Call this function after the entire page has been generated.
         *
         * @access public
         * @return void
         * @version 1.0.0
         * @since 1.0.0
         */
        function stop()
        {
                // controleer of er een cache gemaakt moet worden...
                if (defined('DP_CACHEHANDLER_MAKE') && DP_CACHEHANDLER_MAKE)
                {
                        $inhoud = ob_get_contents();
                        // schrijf de rommel naar een bestand.
                        $file = implode('/',array(DP_CACHE_FOLDER,dotCacheHandler::uid()));
                        file_put_contents($file,$inhoud);
                }
        }

}

if(!function_exists('file_put_contents'))
{
        function file_put_contents($location, $whattowrite)
        {
                if (file_exists($location))
                {
                        unlink($location);
                }
                $fileHandler = fopen($location, "w");
                fwrite($fileHandler, $whattowrite);
                fclose($fileHandler);
        }
}

?>

[ Voor 3% gewijzigd door Skaah op 13-10-2004 13:42 ]


Verwijderd

Topicstarter
Okeej mensen...

Dat met dat pagina parsen heb ik net geprobeert met database en dan door middel van date("U")
Maar dat werkt niet want als de minuut weer begint dan zie je gewoon nix

Das niet helemaal de bedoeling lijkt mij...
Ja je zou de pagina html kunnen kopieeren in .txt en die uitlezen maar dat is niet echt handig denk ik..

Nou vraag ik mij wat af..

Ik had samen met een vriend van mij die cronjobs geprobeert via cpanel.
Nu lukt dat wel maar als je een include hebt op je pagina dan kan die dat niet uitlezen.

Nou vraag ik me af kan je cronjobs wel gebruiken als er include word gebruikt.
Zo ja hoe dan want wij komen er dus echt niet uit..:(

En zo niet hoe dan wel want we moeten dit maken natuurlijk


Alvast bedankt

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 18:37
date("U"); geeft alleen maar de huidige tijd in een unix-timestamp. Dat is lekker makkelijk rekenen met tijd. Anyway: hierboven is je een complete Cache class aangeboden. Volgens mij kun je die zo copy-pasten naar je iegen scripts...

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Ik heb die cache handler geprobeert

Maar ik krijg errors ..:(
Weet iemand misschien hoe dit komt?

Dit zijn de errors:

Warning: fopen(c:/windows/temp/1d92ed02c0316677a92daeef5475c793): failed to open stream: No such file or directory in /home/yourprof/public_html/stats/dotcachehandler.class.inc.php on line 106

Warning: fwrite(): supplied argument is not a valid stream resource in /home/yourprof/public_html/stats/dotcachehandler.class.inc.php on line 107

Warning: fclose(): supplied argument is not a valid stream resource in /home/yourprof/public_html/stats/dotcachehandler.class.inc.php on line 108

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 18:37
Allicht bestaat de directory "C:\windows\temp" niet... (is het soms een Linux server???)

Je zou natuurlijk de cache directory in de class kunnen veranderen [hint]

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Kijk das een goeie hint hahaha

Ik zal het gelijk even proberen..:P

Jullie horen het van me

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:05

Janoz

Moderator Devschuur®

!litemod

Sorry hoor, maar je krijgt een kant en klaar brok code aangeleverd, maar weigerd om er ook maar ene kont van te snappen? Deze parse fouten zijn redelijk simpel op te lossen. Programming & Webscripting is gericht op het zelf programmeren en de problemen die hierbij komen kijken, niet om iemand anders je probleempjes maar voor je op te laten lossen, en al helemaal niet om compiler output uit te gaan leggen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.