Automatisch op wisseling zomer- of wintertijd actie uitvoeren.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Eddy E

Eddy E

30/03/2013 11:21:08
Quote Anchor link
Ik ben beheerder van een phpBB3-forum.
Nu wil ik als het zomertijd wordt (vannacht dus) deze query uitvoeren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE phpbb_users SET user_timezone = user_timezone - 1


En als het wintertijd wordt deze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE phpbb_users SET user_timezone = user_timezone + 1


Mijn vragen:
A) Is dit correct (dus klok vooruit, is het dan time-zone + 1)?
B) Hoe kan ik dit automatisch twee keer per jaar laten aanroepen in het jaar, op de wisselingstijd (zeg: 1:58)? Dus dat het niet 2x gebeurt. Zo voorkom ik bij wintertijd dat het een uur te vroeg gebeurt en bij de zomertijd (vannacht dus), dat het overgeslagen wordt. Immers: 1:59 wordt daarna 3:00. Dus om 2:00 iets doen werkt niet.
Is hier een cronjob voor? Of gewoon elke dag even laten uitvoeren en PHP laten kijken of het nodig is?
 
PHP hulp

PHP hulp

19/05/2024 03:20:57
 
Koen Vlaswinkel

Koen Vlaswinkel

30/03/2013 11:35:35
Quote Anchor link
Ik denk sowieso niet dat dit een verstandig idee is omdat:
1. phpBB3 heeft volgensmij zelf al een instelling zodat de gebruiker DST (zomertijd) kan uitzetten en ik neem dus aan dat dit automatisch wordt gedaan
2. Waarschijnlijk woont niet iedereen in Nederland, en in andere landen verandert de zomertijd andersom.
3. De timezone verandert niet, alleen de DST instelling, het is hier altijd UTC+1
 
Eddy E

Eddy E

30/03/2013 11:41:35
Quote Anchor link
Die optie is er inderdaad wel.
Maar dan moet iedereen handmatig dat veranderen. Dat wil ik dus automatisch/geforceerd doen.

Maar over de tijdzone heb je wel gelijk: de DST verandert. Eens kijken waar dat zit.

De cronjob-syntax:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
     * min                     58
     * uur                    1
     * dag vd maand        *
     * maand                    3, 10 (= maart en oktober)
     * dag van de week    7    (= zondag)
     * actie:                wget -O /dev/null -q * http://www.zundappforum.com/maker_zomerwintertijd.php


Toevoeging op 30/03/2013 11:45:08:

Ik heb nu dit script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

    /* script om zomertijd en wintertijd in te schakelen op een phpBB 3-forum.
     *
     * Wordt automatisch door cronjob uitgevoerd op:
     * min                     58
     * uur                    1
     * dag vd maand        *
     * maand                    3, 10 (= maart en oktober)
     * dag van de week    7    (= zondag)
     * actie:                wget -O /dev/null -q * http://www.zundappforum.com/maker_zomerwintertijd.php
     */

    // Wordt het winter? +1
    // Wordt het zomer? -1

    if(date("n") < 6)
    {

        // het is nog voorjaar, dus klok moet vooruit gezet worden
        $dst = 1;
    }

    else
    {
        // het is al zomer geweest, het wordt winter: dus klok achteruit
        $dst = 0;
    }


    // query maken
    // update elk account (behalve de bots)

    $query = "    UPDATE phpbb_users
                    SET user_dst = "
.$dst."
                    WHERE user_id > 52
                    AND user_id = 54"
;
                    

    // shit laden voor phpBB-toegang
    ini_set("safe_mode", false);
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include ($phpbb_root_path . 'common.' . $phpEx);

    // query uitvoeren
    $result = mysql_query($query);
    if($result === false)
    {

        // er was een bekende fout
        echo 'Fout in het uitvoeren van de query: ' . $query;
    }

    else
    {
        // query gelukt, als goed is klaar?
        if(mysql_affected_rows() > 0)
        {

            echo 'Alles ging goed. De DST is bij ' . mysql_affected_rows() . ' rijen aangepast.';
        }

        else
        {
            // geen false, maar ook niets gedaan? Gaat dus ook fout.
            echo 'Query gelukt, maar geen rijen aangepast...';
        }
    }

?>

Ik ben zelf user 54, dus om het even te testen.
Even een snelle test doet het goed, dus vannacht maar afwachten wat er gebeurt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.