egroupware/phpgwapi/doc/create_ramdisk.php.txt

88 lines
3.1 KiB
Plaintext
Raw Normal View History

<?php
/**************************************************************************\
* phpGroupWare - Experimental tools *
* http://www.phpgroupware.org *
* Written by Joseph Engo <jengo@phpgroupware.org> *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
/* !!! WARNING !!!
** This is highley experimental! Do NOT run it unless you know what you are doing!
** You can serious screaw things up!
**
** Requirements:
** - Must be run as root
** - You need to have RAM disk support complied into the kernel
** - You have to have the CGI binary for PHP
** - This ONLY works with Linux
** - The 2.2 kernel is limited to 20 RAM disks, so you will have to cut down on what you copy over
** - I wouldn't run this on a server with less then 196 MB of RAM. If it has less, preformance
** will only decrease. Since proccess will need to swap out to disk.
**
** The phpGroupWare development team does not support this program in anyway. If it breaks
** or messes up your system, don't email us. Don't submit bug reports. If you do find ways to make
** it better, please submit patches directly to me. jengo@phpgroupware.org
*/
$debug = True;
// Locations of your perminate copy, you will need it to be setup already
define('HARD_COPY','/home/jengo/public_html');
// Where you want your install to be
define('RAM_COPY','/var/www/html');
function command($command)
{
global $debug;
if ($debug)
{
echo $command . "\n";
}
else
{
system($command);
}
}
command('mke2fs /dev/ram0 200');
command('mkdir ' . RAM_COPY . '/phpgroupware');
command('mount -t ext2 /dev/ram0 ' . RAM_COPY . '/phpgroupware');
command('cp ' . HARD_COPY . '/phpgroupware/* ' . RAM_COPY . '/phpgroupware');
$ram_drive_num = 1;
$dh = opendir(HARD_COPY . '/phpgroupware/');
while ($file = readdir($dh))
{
// The 2.2 kernel can only have 20 ram disks
if ($ram_drive_num == 21)
{
exit;
}
if ($file != '.' && $file != '..' && $file != 'CVS' && $file != 'phpgroupware' && is_dir($file))
{
$_du_string = 'du -s ' . HARD_COPY . '/phpgroupware/' . $file;
$_du = `$_du_string`;;
preg_match('/(\w+)\s/',$_du,$du);
$du_size = ereg_replace(' ','',$du[0]);
// Make it slighty larger, so the files copy correctly
$du_size = $du_size + 400;
command('mke2fs /dev/ram' . $ram_drive_num . ' ' . $du_size);
command('mkdir ' . RAM_COPY . '/phpgroupware/' . $file);
command('mount -t ext2 /dev/ram' . $ram_drive_num . ' ' . RAM_COPY . '/phpgroupware/' . $file);
command('cp -R ' . HARD_COPY . '/phpgroupware/' . $file . ' ' . RAM_COPY . '/phpgroupware/' . $file);
$ram_drive_num++;
echo "\n";
}
}