Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP][AJAX]PHP + AJAX?
atom90
post 1.09.2017, 10:05:15
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 tongue.gif

Kod
$( document ).ready(function() {
      var auto_refresh = setInterval(
      function ()
      {
      $('#load_updates').load('ziper.php').fadeIn("slow");
      }, 10000); // refresh every 10000 milliseconds

});

Go to the top of the page
+Quote Post
Pyton_000
post 1.09.2017, 10:09:21
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)
Go to the top of the page
+Quote Post
atom90
post 1.09.2017, 10:39:55
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
Go to the top of the page
+Quote Post
Pyton_000
post 1.09.2017, 10:43:18
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.
Go to the top of the page
+Quote Post
atom90
post 6.09.2017, 08:55:52
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:47