PHPMyExport
Launchpad entry: https://launchpad.net/phpmyexport/
Source code: https://code.launchpad.net/phpmyexport/
Bugtracker: https://bugs.launchpad.net/phpmyexport/
Created: 2007-10-18 by Axel <phpmyexport@vidax.net>
Official Website: http://www.vidax.net
1. Summary
PHPMyExport is a PHP written script. It allows webmasters, administrators and any database users to dump and store the databases.
PHPMyExport is an easy, fast and powerful PHP class, which allows multiple databases dump. This tool is to replace the mysqldump tool, unavailable for hosted websites, not user-friendly or just too complicated to use. It provides a web based interface, for an easy going backup and security system.
Changes with previous version:
PHPMyExport is now a PHP5 clean and tidy class. It uses the power of the Object Oriented Programming (OOP). Any other web application may now interact simply with it.
PHPMyExport embeds ADODB. It supports many database types: mysql, mysqli, postgres, sqlite, mssql, access, ... (help is needed to test on all those databases. Please feel free to contribute)
PHPMyExport can list the databases and the tables of a given host. It allows you to choose very precisely what database/table you wanna backup.
PHPMyExport supports many dump methods: you can either display the dump, append it into in file, upload it on a FTP Server, force the download of the file or reinject directly the dump in another host/database/table.
PHPMyExport has now a debug mode. Each step is watched, each error is catched. You exactly know what is blocking the application.
PHPMyExport supports new dump options, and there are more to come...
2. Requirements
PHPMyExport new version is written in PHP5. Therefore it requires:
A Web server: can be Apache, IIS, ...
PHP5 language php.net
Any of the ADODB supported databases types (mysql, sqlite, postgres, access, ...)
3. Installation
3.1. Using sources
At first, check the requirements. If everything is OK, download the source archive (Until the first official release, there is not source archive). Uncompress it into a Web accessible directory (/var/www/phpmyexport for instance). Point your browser to http://<your_hostname>/phpmyexport. You're done
3.2. Using Bazaar sources
You may checkout the source repository in order to always be up to date. To checkout, run: cd /path/to/your/directory bzr checkout http://bazaar.launchpad.net/~a-vi/phpmyexport/trunk
Caution: the trunk is the development directory. Code may be unstable. Trunk is mostly used for testing purposes.
4. The PHPMyExport engine
4.1. Instantiate the class
At first, when you need the PHPMyExport engine, you need to include the class:
include 'phpmyexport.class.php';
... and to instantiate it. PHPMyExport expects at least one parameter: the DNS string (check ADODB Documentation for details):
$app = new PHPMyExport('mysql://root:password@localhost');
If you want to run in debug mode (error messages will be printed out), do:
$app = new PHPMyExport('mysql://root:password@localhost', true);
4.2. Setting Options
Here is the list of the options you may set:
'export_structure' => true, 'export_datas' => true, 'query_type' => array('insert', 'replace'), 'use_transaction' => false, 'add_create_database' => true, 'add_drop_database' => true, 'add_drop_table' => true,
4.2.1. export_structure
true (default): will add queries to create databases and tables
- false: will not create databases or tables
4.2.2. export_datas
true (default): tables content will also be dumped
- false: does not dump tables content
4.2.3. query_type
insert (default): will output INSERT INTO queries
- replace: will output REPLACE INTO queries
4.2.4. use_transaction
- true: transactions will be used. It depends on the database engine. Transaction is rollbacked when an error occurs
false (default): no transaction is used
4.2.5. add_create_database
true (default): add the CREATE DATABASE query for each database you dump
- false: does not create databases
4.2.6. add_drop_database
true (default): add the DROP DATABASE IF EXISTS query for each database you dump
- false: does not drop existing databases
4.2.7. add_drop_table
true (default): add the DROP TABLE IF EXISTS query for each table you dump
- false: does not drop existing tables
4.2.8. more to come...
You've got ideas, questions? You wanna contribute? See here: https://launchpad.net/phpmyexport
To set an option, do:
$app->setOption('<option_name>', '<option_value>');
For example:
$app->setOption('add_drop_database', false);
4.3. Setting dump method
PHPMyExport offers you 4 ways to export your dump:
4.3.1. output
If you choose this option, the dump will be printed out in your browser (or client). That can be convenient for small and medium dumps. Be careful with big and massive dumps: browsers are not keen to display thousands and thousands of lines.
$app->setDumpMethod('output');
4.3.2. download
PHPMyExport will trigger a download box. You will be able to save the dump on your local machine. The option accepts one optional parameter:
filename (optional): the dump filename
$app->setDumpMethod('download', array('filename'=>'dump.sql'));
4.3.3. write
PHPMyExport will open a file on the server hard drive and append the dump into it. The option accepts two parameters:
path (mandatory): the path the file will be saved in. Make sure PHP has write access in this directory
filename (optional): the file name
$app->setDumpMethod('write', array('path'=>'/home/axel', 'filename'=>'dump.sql'));
4.3.4. FTP upload
PHPMyExport will open a distant FTP connection in order to upload the dump (new feature, more details to come)
4.3.5. inject
PHPMyExport can now open a new database connection to append the dump. The options accepts one mandatory argument:
DNS driver (check ADODB Documentation for details): <driver>://<username>:<password>@<hostname>/<database>
4.4. Choose the databases and the tables to dump
PHPMyExport can list for you the databases and the tables of the current connection.
To get the databases list, just do:
$databases = $app->getDatabasesList();
To get the tables list for a given database, just do:
$table = $app->getTablesList('<database>');
Now you have to build the databases and tables list you wanna dump. You may use the * wildcard meaning: everything. You may choose all databases and all tables or choose one database and all its tables or choose just a couple of tables. You can actually do whatever you want. Here is an example:
$todump = array( 'mysql'=> array('user', 'db'), 'information_schema'=>'*' );
In the example, you're going to backup:
two tables from the mysql database: user and db
all tables from the information_shema database
You can also do :
$todump = array('*');
You're going to backup all databases.
4.5. Start the dump
Now you're done with the options. You probably want to start the dump now Just use the goDumpNow() function. This function requires one argument: the list of databases and tables you've generated above. The result is:
$app->goDumpNow($todump);
5. Demonstration version
Demo version can be found here: http://phpmyexport.vidax.net.
- Driver: mysql
- Host: localhost
- User: phpmyexport
- Pass: demo
Warning: the demo might not be fully fonctionnal as the project is still under development
6. Notes
PHPMyExport is still under heavy development. This a beta version. For now, only the engine is being released. Unlike the previous versions, there is no graphical interface (GUI) for this version. Once the engine is ready, that will be my next task. Actually, anyone could contribute and help at developing and designing a GUI for PHPMyExport
This page also needs modifications. This is the very first version, and I probably forgot a couple of things ;-).
I support the goPHP5 website. http://www.gophp5.org/sites/gophp5.org/files/gophp5_logo.png
7. Class Description - Methods list
/** * __construct() : this method is called on startup, initiates connection and options * $driver: DSN string * $debug: whether to run in debug mode or not **/ public function __construct($driver, $debug = false) /** * Sets an option **/ public function setOption($name, $value) /** * Returns an option value **/ private function getOption($name) /** * prepareDump() : analyses and parses the dump options * $content: list of databases/tables to dump **/ private function prepareDump($content = array()) /** * goDumpNow(): start the dump process * $content: list of databases/tables to dump **/ public function goDumpNow($content = array()) /** * What dump method to use * $method: the method * $options: method specific options **/ public function setDumpMethod($method, $options = array()) /** * Checks that arguments are valid **/ private function checkArguments($options) /** * Starts the method stuff **/ private function prepareMethod() /** * Outputs a row of the dump * depends on the method **/ private function outputDump($row) /** * getFilename(): return the dump filename, * automatically generated or user generated * adds the / if applicable **/ private function getFilename() /** * getDatabasesList(): returns an exploitable list of databases **/ public function getDatabasesList() /** * getTablesList(): returns an exploitable list of tables for a given database * $database: database to work on **/ public function getTablesList($database) /** * connect(): initiates the connection to the database * $type: can be set to "read" or "write" **/ private function connect($type = 'read') /** * listDatabases(): gather the databases **/ private function listDatabases() /** * listTables(): gather the tables **/ private function listTables($database) /** * raiseError():: logs and displays if debug mode on * $content: message to display **/ private function raiseError($content)
PHPMyExport (last edited 2008-08-06 17:00:17 by localhost)