-
- kanedasam

-
Total Posts: 3
Joined: 2009-06-07
|
Ola Pessoal
Sou novato em php, mas já programo a um bom tempo, mas estou tendo dificuldades em finalizar um script de php para agilizar o tempo de instalação e, se necessário reinstalar o magento com rapidez. Pois o ftp do meu servidor e muito lento e fica uma eternidade para colocar o magento lá.
Na Verdade esta funcionando, so que preciso aumentar, de verdade, o timeout do meu script , e concertar algumas coisas.
O que estou fazendo e o zipar os diretórios do magento e descompactar no servidor dentro do diretório Magento :
404.zip
app.zip // este leva mais tempo e as vezes da timeout
downloader.zip
includes.zip
js.zip
lib.zip
media.zip
pkginfo.zip
report.zip
rootrmag.zip // Aqui esta os arquivos que ficam na raiz
skin.zip
var.zip
Neste diretório, Magento, aplico a permissão de escrita e coloco estes 3 scripts lá junto os arquivos zipados.
extract.php
<? require_once('function.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <style type="text/css"> <!-- #titulo { color: #FFF; } --> </style> </head>
<body>
<table width="707" border="0" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#666666" id="titulo"> Arquivos ZIP </td> <td bgcolor="#666666" id="titulo"> Diretórios do Mesmo nome</td> <td bgcolor="#666666" id="titulo"> Ação</td> </tr> <? if ($arquivos != "") {
foreach($arquivos as $listar) { $ext_file = substr($listar,-4); $nome = substr($listar, 0, -4); //filtra o tipo do arquivo if ($ext_file == ".zip") { //print " Arquivo: <a href='$listar'>$listar</a><br>"; echo '<tr>'; echo '<td bgcolor="#CCCCCC">'; echo $nome; echo '</td>'; if (recursive_array_search($nome,$pastas)) { echo '<td bgcolor="#CCCCCC">Existe o Dirétorio - '.$nome.'</td>'; echo '<td bgcolor="#CCCCCC">'; echo '<form action="extract_process.php" method="post" enctype="multipart/form-data" name="form'.$nome.'" target="_self" id="form'.$nome.'">'; echo '<input name="file" id="file" type="hidden" value="'.$nome.'" size="2"/>'; echo '<input type="submit" name="action" id="action" value="Desinstalar" />'; echo '</form>'; echo '</td> '; } else { echo '<td bgcolor="#CCCCCC">Não Existe Diretorio - '.$nome.'</td>'; echo '<td bgcolor="#CCCCCC">'; echo '<form action="extract_process.php" method="post" enctype="multipart/form-data" name="form'.$nome.'" target="_self" id="form'.$nome.'">'; echo '<input name="file" id="file" type="hidden" value="'.$nome.'" size="2"/>'; echo '<input type="submit" name="action" id="action" value="Instalar" /> '; echo '</form>'; echo '</td>'; } echo '</tr>'; }
} }
?>
</table>
</body> </html>
extract_process
<?php require_once('function.php'); $workfile = $_POST["file"]; $action = $_POST["action"];
$to = "extract.php"; if ($action == "Desinstalar") { rmdirr($workfile); header('Location: '. $to); } if ($action == "Instalar") { unzip($workfile.'.zip'); header('Location: '. $to); }
?>
function.php
<? set_time_limit(180); // Função que apagará o diretorio de forma recursiva function rmdirr($dirname) { // Sanity check if (!file_exists($dirname)) { return false; }
//Simple delete for a file if (is_file($dirname) || is_link($dirname)) { return unlink($dirname); }
// Loop through the folder $dir = dir($dirname); while (false !== $entry = $dir->read()) { // Skip pointers if ($entry == '.' || $entry == '..') { continue; }
// Recurse rmdirr($dirname . DIRECTORY_SEPARATOR . $entry); }
// Clean up $dir->close(); return rmdir($dirname); }
// Função que irá fazer a descompactação dos arquivos no diretório function unzip($zipfile) { $zip = zip_open($zipfile); while ($zip_entry = zip_read($zip)) { zip_entry_open($zip, $zip_entry); if (substr(zip_entry_name($zip_entry), -1) == '/') { $zdir = substr(zip_entry_name($zip_entry), 0, -1); if (file_exists($zdir)) { //trigger_error('Diretorio "<b>' . $zdir . '</b>" já existe', E_USER_ERROR); return false; } mkdir($zdir); } else { $name = zip_entry_name($zip_entry); if (file_exists($name)) { // trigger_error('Arquivo "<b>' . $name . '</b>" já existe', E_USER_ERROR); return false; } $fopen = fopen($name, "w"); fwrite($fopen, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)), zip_entry_filesize($zip_entry)); } zip_entry_close($zip_entry); } zip_close($zip); return true; } // Função que irá fazer uma busca recursiva em uma array function recursive_array_search($needle,$haystack) { //Você pode receber este erro devido que local que o script esta rodando não tenha diretórios // mas isso não causa erro. //Warning: Invalid argument supplied for foreach() in /home/redfoxtecno/www/lojamod1/function.php on line 62 foreach($haystack as $key=>$value) { $current_key=$key; if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value))) { return true; } } return false; }
//unzip('magento.zip'); //$total=count($files = glob("{*.zip}", GLOB_BRACE)); //print_r("nessa pasta tem $total aruivos zipados <br>"); //print_r($files); // pega o endereço do diretório $diretorio = getcwd(); // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens;} sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){
// checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } }} ?>
|