2017-11-20 15 views
0

PHPスクリプトは:は中止、私は成功し、次のコードをフォルダを圧縮

$('#test').click(function(){ 
    $.ajax({ 
     method:'post', 
     url:site+'/home/test', 
     data:{item_name:item_name,ext:ext}, 
     success:function(result){} 
    }); 
}); 

public function test(){ 
    $item_name=$this->input->post('item_name'); 
    $ext=$this->input->post('ext'); 
    shell_exec('cd zip_folder/; zip -r '.$item_name.'.'.$ext.' '. $item_name); 
    echo '1'; 
} 

しかし、私はフォルダが1ギガバイトのような、非常に大きいという問題があり、それが圧縮する多くを取り、私が作ることができませんスクリプトの終わりまで、より多くの要求。キャンセルボタンを使用してプロセスをキャンセルできる可能性を示したいと思います。私はすでにxhr.abort()を試みたが成功しなかった。 f5を押しても、ジップが完了するまでサイトはロードされたままです。また、このスクリプトをキャンセルするためにf5を押すことが可能かどうかを知りたいと思います。

+0

'data:item_name:item_name、ext:ext}、'はここに入力ミスのようですか? – jmargolisvt

+0

phpの設定でignore_user_abortを確認してください。ユーザーがスクリプトを中断して読み込みを続けると、無視されることがあります。 ignore_user_abort(真)を入れてみてください。 zipメソッドの先頭にある – Brett

+0

はい、ありがとうございますが、コードは正常に動作しています – Darm0ka

答えて

1

実行中のプロセスをすべて取得し、そのプロセスを終了することができます。すべてはshell_execです。

+0

この解決策は働いた。私はshell_exec( 'killall -9 zip')で他のPHP関数を使ってzipを止め、関数test()でsession_write_close()を追加しました。 – Darm0ka

関連する問題