Archive

Archive for the ‘Bash scripting’ Category

watermark image with php and ImageMagick


Here a simple function that use ImageMagick command to apply a watermark image as background of another one.

/**
* Direct command from imagemagick
* composite -dissolve 15 -tile watermark.png source.jpg destination.jpg
*
* @param string $watermarkfile
* @param string $sourcefile
* @param string $destfile
* @param int $dissolve
* @return boolean
*/
function watermarkImage($watermarkfile, $sourcefile, $destfile, $dissolve = 5)
{
$cmd = "/usr/bin/composite -dissolve $dissolve -tile $watermarkfile $sourcefile $destfile";

exec($cmd, $output, $return);
return $return === 0;
}

Advertisements
Categories: Bash scripting, Functions, PHP

Cambiare l’engine di una o più tabelle di MySql

13 July 2011 2 comments

Qualora si volesse cambiare l’engine di una o più tabelle di un database MySql

o si fa a mano oppure potete utilizzare questo script 🙂




echo "\n\n";
set_time_limit(1000);

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;


//Connection variables :
$h = 'localhost';
$u = @$argv[1];
$p = @$argv[2];
$database = @$argv[3];
$engine = @$argv[4];
$table = @$argv[5]; //Facoltativo

if(empty($u)) die("\nSpecificare l'username come parametro 1\n");
if(empty($p)) die("\nSpecificare la password come parametro 2\n");
if(empty($database)) die("\nSpecificare il database come parametro 3\n");
if(empty($database)) die("\nSpecificare il database come parametro 4\n");
if(empty($engine)) die("\nSpecificare il tipo di engine da impostare sulle tabelle come parametro 4\n");



/* The php->mysql API needs to connect to a database even when executing scripts like this.
  If you got an error from this(permissions),
  just replace this with the name of your database */

$db_link = mysqli_connect($h, $u, $p, "information_schema");


$sql = "SELECT * FROM `TABLES`
        WHERE TABLE_SCHEMA = '".addslashes($database)."'
        AND `ENGINE`  '".addslashes($engine)."' ";
if(!empty($table)) {
    $sql .= " AND `TABLE_NAME` = '".addslshes($table)."' ";
}


$rs = mysqli_query($db_link, $sql);

echo "Modifica engine a ".mysqli_num_rows($rs)." tabelle\n";

$sql_to_execute = array();
while($row = mysqli_fetch_object($rs))
{
    $sql_to_execute[] = "alter table `".$row->TABLE_SCHEMA."`.`".$row->TABLE_NAME."` engine = ".$engine.";";
}

foreach($sql_to_execute as $sql)
{
    echo "$sql\n";
    mysqli_query($db_link, $sql);
}

mysqli_close($db_link);

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 6);
echo 'Parsed in ' . $total_time . ' secs' . "\n\n";


Questa funzione è molto semplice e semplicemente può essere lanciata dal seguente comando su una shell, tenete presente che i parametri possono essere

1 = username
2 = password
3 = database
4 = nuovo engine
5 = nome di una singola tabella da modificare

Volutamente non è stato inserito l’host in quanto si presuppone che operazioni così delicate vengano fatte da localhost. Diversamente basterà modificare
l’impostazione nello script.

Es comando:

[root@principe home]# php mysql_change_engine_tables.php "username_test" "password_test" "database_test" "InnoDB"

Categories: Bash scripting, MySQL, PHP

Ottimizzare le tabelle di MySql


Molti spesso necessitano di ottimizzare le tabelle di MySql,
attenzione a non farlo con le InnoDB in quanto non avreste nessun risultato 🙂

Questa funzione è molto semplice e semplicemente può essere lanciata dal seguente comando su una shell: [root@principe home]# php mysql_optimize_tables.php "database_test" "username_test" "password_test"



set_time_limit(100);

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;


//Connection variables :
$h = 'localhost';
$u = 'xxx';
$p = 'xxxx';

if(!empty($argv[2])) {
    $u = $argv[2];
    echo "Param 2: $u\n";
}
if(!empty($argv[3])) {
    $p = $argv[3];
    echo "Param 3: $p\n";
}
if(!empty($argv[1])) {
    $database = @$argv[1];
    echo "Param 1: $database\n";
}


$dummy_db = 'mysql';

/* The php->mysql API needs to connect to a database even when executing scripts like this.
  If you got an error from this(permissions),
  just replace this with the name of your database */

$db_link = mysql_connect($h, $u, $p);


$sql = 'SHOW DATABASES';
if(!empty($database)) {
	$sql .= " WHERE `Database` = '".addslashes($database)."' ";
}

$res = mysql_db_query($dummy_db, $sql, $db_link) or die('Could not connect: ' . mysql_error());
echo 'Found ' . mysql_num_rows($res) . ' databases' . "\n";
$dbs = array();
while ($rec = mysql_fetch_array($res)) {
    $dbs [] = $rec [0];
}

foreach ($dbs as $db_name) {
    echo "Database : $db_name \n\n";
    $res = mysql_db_query($dummy_db, "SHOW TABLE STATUS FROM `" . $db_name . "`", $db_link) or die('Query : ' . mysql_error());
    $to_optimize = array();
    while ($rec = mysql_fetch_array($res)) {
        if ($rec['Data_free'] > 0) {
            $to_optimize [] = $rec['Name'];
            echo $rec['Name'] . ' needs optimization' . "\n";
        }
    }
 
    echo "To optimize: ".count($to_optimize)." tables\n";
    if (count($to_optimize) > 0) {
        foreach ($to_optimize as $tbl) {
            mysql_db_query($db_name, "OPTIMIZE TABLE `" . $tbl . "`", $db_link);
        }
    }
}

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 6);
echo 'Parsed in ' . $total_time . ' secs' . "\n\n";

Categories: Bash scripting, MySQL

Esportazione dati MySql


Spesso molti mi chiedono uno script per l’esportazione dei dati su files separati per le tabelle contenute su MySql.

A tal proposito ecco un semplice ma efficace scripts bash.

#!/bin/bash
db=$1
user=$2
pswd=$3
desturl=$4

if [ “$db” = “” ]; then
echo “Usage: $0 db_name”
exit 1
fi
mkdir $desturl
mkdir $desturl$db
cd $desturl$db
clear

for table in `mysql -u $user –password=$pswd $db -e ‘show tables’ | egrep -v ‘Tables_in_’ `; do
echo “Dumping $table”
mysqldump -v -l -u $user –password=$pswd –opt -Q $db $table > $table.sql
tar cjf $table.tar.bz2 $table.sql
rm -f $table.sql
done

if [ “$table” = “” ]; then
echo “No tables found in db: $db”
fi

chmod -R 777 $desturl

Per utilizzare questo script basta semplicemente lanciare il comando:

[orazio@principe scripts]# ./mysql_backup.sh “test” “root” “pass” “backup”

Categories: Bash scripting, MySQL

Benvenuti


Buongiorno a tutti.

Con questo post informo tutti che questo blog conterrà tutte le varie funzioni, classi, utilità che durante gli

anni di lavoro ho sviluppato ed appreso per rendere il tutto disponibile a chi ne abbia bisogno.

Lo scopo principale di questo blog è quello di sfatare il mito che non basti php per fare

tutto ciò che serve per un’applicazione web e che occorra sempre affidarsi a plugins o linguaggi di programmazione

differenti.

<?
p -> program
h -> hight
p -> performance
?>

Ci saranno inoltre dei posts riguardanti i vari ambienti che incontrerete nella vostra vita programmativa come

Apache2, MySql e qualche scripts lato server che sarà sempre utile per fare le varie operazioni che possono

essere delegate al server anziché all’applicazione stessa.

Buona lettura

Principe Orazio

%d bloggers like this: