![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym napisać skrypt, który Tworzy kopie zapasową plików na serwerze. Mam przygotowany wstepny skrypt w php: Kod <?php $when=date("Y-m-d"); if (!file_exists('../BackUp')) { mkdir('../BackUp', 0777, true); echo 'Utworzono katalog BackUp <br>'; } else{ } // Get real path for our folder $rootPath = realpath('../'); // Initialize archive object $zip = new ZipArchive(); $zip->open('../BackUp/'.$when.'-backup1.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE); // Create recursive directory iterator /** @var SplFileInfo[] $files */ $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($rootPath), RecursiveIteratorIterator::LEAVES_ONLY ); foreach ($files as $name => $file) { // Skip directories (they would be added automatically) if (!$file->isDir()) { // Get real and relative path for current file $filePath = $file->getRealPath(); $relativePath = substr($filePath, strlen($rootPath) + 1); if((strpos($relativePath, 'BackUp') !== false) || (strpos($relativePath, 'zipper') !== false)){ //Omija katalog Backupu i skryptu } // Add current file to archive else{ echo $relativePath."<br>"; $zip->addFile($filePath, $relativePath); } } } // Zip archive will be created only after closing object $zip->close(); echo "BackUp Gotowy"; //Remove zipper.php //unlink("zipper.php"); ?> Problem w tym, że chciałbym aby informacje zostały wyświetlane na bieżąco o procesie działania skryptu. Wystarczy mi przykład działania czegoś takiego, że np wprowadza w dane elementy dane rzeczy z przebiegu skryptu. próbowałęm coś takiego, ale to chyba zły pomysł i zresztą nie działa ![]() Kod $( document ).ready(function() { var auto_refresh = setInterval( function () { $('#load_updates').load('ziper.php').fadeIn("slow"); }, 10000); // refresh every 10000 milliseconds }); |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
zapisuj sobie informacje do sesji o postępie, a potem w ajax z interval odpytuj o wartość z sesji jakiś inny skrypt. (albo ten samtylko na początkui z warunkiem o samo info)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
Troche mnie nakierowałeś, ale jakoś bym musiał widzieć skrypt o podobnym działaniu jaki potrzebuje. Coś się wykonuje w pętli w php. I widze przebieg kazdego wykonania petli ale nie caly naraz jak sie wykona skrypt tylko nadpisujace sie pole dynamicznie zmieniajace i na koncu np informacje o zakonczeniu tego procesu
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
No ale co Ty chcesz. Odpalasz jakąś akcję w Ajax. Na początku skryptu który coś tam mieli ustawiasz pusty progress w Session i aktualizujesz w zależności od potrzeb.
Potem odpalasz (w trakcie działania) kolejny Ajax ale już do miejsca/slryptu który odczyta wartość progresu z Sesji i wyświetli. Tyle. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
Hej... Właśnie mam problem z połączeniem tego z ajaxem. Specjalnie nie znam się na tym i pewnie to trywialne, ale jeszcze dla mnie czarna magia.
aktualnie kod wygląda tak: Kod <?php session_start(); $when=date("Y-m-d"); if (!file_exists('../BackUp')) { mkdir('../BackUp', 0777, true); echo 'Utworzono katalog BackUp <br>'; } else{ } // Get real path for our folder $rootPath = realpath('../'); // Initialize archive object $zip = new ZipArchive(); $zip->open('../BackUp/'.$when.'-backup.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE); // Create recursive directory iterator /** @var SplFileInfo[] $files */ $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($rootPath), RecursiveIteratorIterator::LEAVES_ONLY ); foreach ($files as $name => $file) { // Skip directories (they would be added automatically) if (!$file->isDir()) { // Get real and relative path for current file $filePath = $file->getRealPath(); $relativePath = substr($filePath, strlen($rootPath) + 1); if((strpos($relativePath, 'BackUp') !== false) || (strpos($relativePath, 'zipper') !== false)){ } // Add current file to archive else{ $_SESSION["show_path"]=$relativePath; //echo $relativePath."<br>"; echo '<pre>' . print_r($_SESSION["show_path"], TRUE) . '</pre>'; $zip->addFile($filePath, $relativePath); } } } // Zip archive will be created only after closing object $zip->close(); echo "BackUp Gotowy"; //Remove zipper.php //unlink("zipper.php"); ?> zapisałem to w sesji, ale bladego pojecia nie mam jak zabrac sie za uruchomienie skryptu za pomoca ajaxa, a potem odswiezania procesu dzialania skyptu. a dokladnie zwracania tego co w sesji sie zapisuje.(nadpisuje) odpalilem to takim skryptem: Kod jQuery(document).ready(function($){ var resp = $("#response"); $.ajax({ type: "POST", // Method type GET/POST url: "ziper.php", //Ajax Action url data: {}, // Before call ajax you can do activity like please wait message beforeSend: function(xhr){ resp.html("Please wait..."); }, //Will call if method not exists or any error inside php file error: function(qXHR, textStatus, errorThrow){ resp.html("There are an error"); }, success: function(data, textStatus, jqXHR){ resp.html(data); } }); }); pozostalo mi zamienic w php echo na rzeczywiste wyswietlanie sesji... tylko tu utknąłem Hej. Widze, że cisza. Ogólnie długo szukałem i nie potrafiłem znaleźć odpowiedzi na mój problem. Ogólnie poprostu nie wiem jak to wyciągnąć z php do js. Bladego pojęcia nie mam... To tak naprawde pewnie spowolni lekko działanie, ale przynajmniej będzie dobry efekt wizualny i da mi widok, że coś naprawde się wykonuje, niż czekanie az komunikat się zmieni po zakończeniu procesu. lub wyświetle na koniec wszystkie sciezki, które były zipowane. Proszę jeszcze raz o pomoc. Ten post edytował atom90 4.09.2017, 08:58:02 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 15:47 |