MySQL database back-uppen met PHP -> Cronjob

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Tom C

Tom C

07/10/2011 16:13:33
Quote Anchor link
Hoi allemaal,

Ik ben op zoek naar een PHP script wat (in de toekomst) een grote database kan backuppen. Ik ben al ruim twee uur aan het zoeken, maar ik kan alleen maar scripts vinden die óf niet werken, óf alleen maar kleine databases kunnen backuppen.

Ik heb in het verleden een prachtig script gehad wat een speciale methode gebruikte om time-outs te voorkomen, maar ik kan het niet meer terugvinden.

Uiteindelijk is het de bedoeling dat ik het PHP bestand kan aanroepen met een cronjob. Het resultaten laten mailen is niet per se nodig, maar zou wel fijn zijn.

Wie kan mij helpen?

Mvg,
Tom
 
PHP hulp

PHP hulp

28/11/2024 06:47:22
 
- Ariën  -
Beheerder

- Ariën -

07/10/2011 16:29:55
Quote Anchor link
Al eens gekeken naar Bigdump?

http://www.ozerov.de/bigdump/

Mocht je DirectAdmin gebruiken, dan kan je ook de API daarvan aanroepen via een cronjob?
Gewijzigd op 07/10/2011 16:30:28 door - Ariën -
 
Tom C

Tom C

10/10/2011 08:53:36
Quote Anchor link
- Aar - op 07/10/2011 16:29:55:
Mocht je DirectAdmin gebruiken, dan kan je ook de API daarvan aanroepen via een cronjob?

Ik gebruik DirectAdmin.. Hoe gaat dat dan precies in zijn werking?
 
- Ariën  -
Beheerder

- Ariën -

10/10/2011 10:47:14
Quote Anchor link
Ik weet in ieder geval dat het via deze URL kan.
http://www.jouwdomein.nl:2222/CMD_API_SITE_BACKUP?domain=JOUWDOMEIN.NL&action=backup&select0=database

Directadmin heeft een leuke class waarmee je zulke URL's mooi kan aanroepen, en vervolgens kan zien of het gelukt is.

Ik hoop dat je er uit komt, anders zal ik eens kijken of ik een voorbeeld kan maken, als het echt niet lukt.
 
Jordi Kroon

Jordi Kroon

10/10/2011 10:57:07
Quote Anchor link
Download de class

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
<?php
include 'httpsocket.php';

$sock = new HTTPSocket;
$sock->connect('JE DOMEIN',2222);

$sock->set_login("INLOGNAAM","INLOGPASS");

$sock->set_method('POST');

$sock->query('/CMD_API_CRON_JOBS',
    array(
        'action' => 'create',
        'domain' => 'JE DOMEIN',
        'minute' => 'HOEVEEL MINUTEN',
        'hour' => 'WELK UUR',
        'dayofmonth' => 'WELKE DAG VD MAAND',
        'month' => 'WELKE MAAND IN CIJFERS',
        'dayofweek' => 'WELKE DAG VD WEEK',
        'command' => 'VOLLEDIG PATH NAAR BESTAND',
    ));

$result = $sock->fetch_body();

echo $result;

?>
Gewijzigd op 10/10/2011 11:03:35 door Jordi Kroon
 
- Ariën  -
Beheerder

- Ariën -

10/10/2011 11:13:40
Quote Anchor link
En pas die $sock->query aan naar: /CMD_API_SITE_BACKUP, en pas die array aan, zodat je dit krijgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
/* Yaddah */

$sock->query('/CMD_API_SITE_BACKUP',
    array(
        'action' => 'backup',
        'select0' => 'database'
    ));
?>

En dit zou je dan als cronjob kunnen draaien. Als je de class includeert. Gebruik dan wel een volledig pad in je include(), zoals /home/JOUWUSERNAME/domains/JOUWDOMEIN.NL/private_html/da_class.php
Gewijzigd op 10/10/2011 11:16:16 door - Ariën -
 
Tom C

Tom C

10/10/2011 14:50:26
Quote Anchor link
Oké, dus ik maak gewoon een mapje aan met die class erin. Vervolgens een nieuw php bestandje met de volgende inhoud:

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
<?php
include 'httpsocket.php';

$sock = new HTTPSocket;
$sock->connect('JE DOMEIN',2222);

$sock->set_login("INLOGNAAM","INLOGPASS");

$sock->set_method('POST');

$sock->query('/CMD_API_SITE_BACKUP',
    array(
        'action' => 'backup',
        'select0' => 'database'
    ));
$result = $sock->fetch_body();

echo $result;
?>


En die aanroepen met cron, right?
 
- Ariën  -
Beheerder

- Ariën -

10/10/2011 15:35:08
Quote Anchor link
Correct, gebruik wel het volledige pad naar de httpsocket.php, en was je waardes uiteraard aan ;-).
 
Tom C

Tom C

11/10/2011 09:48:31
Quote Anchor link
Oké, ik heb beide bestanden geüpload en even met mijn browser naar 'backup.php' gesurft. Ik krijg een blanco scherm.. Is dat de bedoeling? :P

Het pad naar httpsocket.php klopt, want dat was eerst fout (foutmelding), nu krijg ik dus gewoon helemaal niets te zien.
 
- Ariën  -
Beheerder

- Ariën -

11/10/2011 11:15:40
Quote Anchor link
Je zou op zijn minst een result moeten zien.
De backup is gelukt als de Ticket Notifier rechtsbovenaan DA een nieuwe ticket meldt.

- Heb je wel je gegevens (user/pass/domain) goed ingesteld?
- Gebruik eens $sock->set_method('GET'); i.p.v. de genoemde POST.

Zet anders even je error-reporting aan. en display_errors op 1
Gewijzigd op 11/10/2011 11:18:27 door - Ariën -
 
Tom C

Tom C

11/10/2011 11:31:29
Quote Anchor link
- Gegevens zijn goed (domain heb ik zonder 'www.')
- GET werkt niet zo min als POST

error-reporting heb ik toch aanstaan? Althans dat denk ik, omdat ik wel een error kreeg toen mijn pad naar httpsocket.php niet klopte..
 
- Ariën  -
Beheerder

- Ariën -

11/10/2011 11:35:51
Quote Anchor link
En een var_dump($result)?
 
Tom C

Tom C

11/10/2011 11:37:13
Quote Anchor link
- Aar - op 11/10/2011 11:35:51:
En een var_dump($result)?

-->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
string(0) ""
 
- Ariën  -
Beheerder

- Ariën -

11/10/2011 11:39:57
Quote Anchor link
Vreemd, en draait DA op http of https? EN wel op poort 2222?
 
Tom C

Tom C

11/10/2011 11:42:03
Quote Anchor link
Voor zover ik kan zien draait DA op http, en ja: op poort 2222.
 
- Ariën  -
Beheerder

- Ariën -

11/10/2011 11:44:41
Quote Anchor link
Je voert het handmatig uit, bij wijze van test?
Want met een cron zullen includes niet direct werken, tenzij je een volledig pad gebruikt.
 
Tom C

Tom C

11/10/2011 11:46:26
Quote Anchor link
Ja, ik bezoek gewoon met mijn browser 'backup.php'.

Edit: overigens geef ik ook het volledige pad op.
Gewijzigd op 11/10/2011 11:46:40 door Tom C
 
- Ariën  -
Beheerder

- Ariën -

11/10/2011 11:55:20
Quote Anchor link
Strange...

Verder zou het kunnen dat je ook je domain die je wilt backuppen aan moet geven als parameter in de array, dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$sock->query('/CMD_API_SITE_BACKUP',
    array(
        'action' => 'backup',
       'domain' => 'JOUWDOMEIN.NL',
        'select0' => 'database'
    ));



Werkt dat wel?
Gewijzigd op 11/10/2011 11:56:32 door - Ariën -
 
Tom C

Tom C

11/10/2011 11:58:58
Quote Anchor link
Nope :(

Bedankt voor de hulp tot nu toe, trouwens! Ik ben er erg blij mee. Alleen jammer dat het nog niet wil lukken tot nu toe.
 
- Ariën  -
Beheerder

- Ariën -

11/10/2011 12:06:46
Quote Anchor link
Dit is echt bizar. Deze API is niet echt lekker geformuleerd.

Ik zag er zelf eens mee spelen vandaag.
Maar gebeurt er wel wat als je de URL handmatig aanroept?

http://www.jouwdomein.nl:2222/CMD_API_SITE_BACKUP?domain=jouwdomein.nl&action=backup&select0=database
 
Tom C

Tom C

11/10/2011 12:08:03
Quote Anchor link
Zo te zien wel:
Quote:
error=0&text=Backup creation added to queue&details=You will receive a message when it&#39s complete.


Toevoeging op 11/10/2011 12:13:23:

Kan het niet zo?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sock->query(/CMD_API_SITE_BACKUP?domain=jouwdomein.nl&action=backup&select0=database);
 

Pagina: 1 2 volgende »



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.