Я с вашей помощью:
function send(){ $.get("/site/send.php", function(data){ alert(data); } }
На сайте / send.php у меня есть:
for($=0;$i++;$i<1000) sleep(1); } echo "OK";
Затем у меня в файле js:
send(); $("#click").click(function(){ window.stop(); // this cancel XHR $.get("/site/reset.php", function(data){ alert(data); } })
и в reset.php:
echo "RESET";
window.stop (); отмените мой XHR, но это все еще не работает нормально. я отменяю XHR, но все же я должен ждать сна (1000) в функции send (). Это ничего не возвращает, но продолжает выполнять. Только если sleep> 1000, то /site/reset.php начинает выполняться.
как я могу в этом примере отменить функцию PHP?
Возможно, проверка в PHP-файле проверяет, все ли XHR isestet?
Любое из следующих действий может работать:
ignore_user_abort(false);
for ($=0;$i++;$i<1000) { if (connection_aborted()) break;
for ($=0;$i++;$i<1000) { if (connection_status() != CONNECTION_NORMAL) break;
Если у вас есть root-доступ на php-сервере, если вы работаете в Linux, вы можете просто выполнить команду bash, используя `:
echo `ps -A`;
вы получите список всех запущенных процессов на машине, а затем, если вы знаете, что пользователь apache использует для выполнения сценариев, вы можете затем эхо ps -u user
;
После определения правильного PID вы можете убить его с помощью:
echo `kill PID`;
бывший
echo `kill 1023`;
или
// Я не знаю, работает ли это именно так: eval ('echo kill '.$_GET['PID'].'
;');
Все это выполнено в другом php-скрипте, сделанном именно для того, чтобы убить другие скрипты по команде.
Вы можете использовать AJAX для запроса таких заданий из упомянутого сценария.
Кроме того, вы можете сделать файл php для клиента своим собственным PID (google для функции записи, он очень похож на c), а затем javascript может отправить этот PID прямо на этот скрипт-убийцу, чтобы командовать остановкой выполнения для некоторого скрипта ,
ИЗМЕНИТЬ 1:
вы можете получить управляемый скрипт PID с помощью этой функции:
getmypid();
и вы можете сохранить его в файле или лучше в переменной сеанса
$_SESSION[__FILE__] = getmypid();
и чтобы остановить работу файла, вы можете вызвать такую страницу (killer.php):
<?php // security verifications, etc /* */ session_start(); $f = $_SESSION[$_GET['file']]; echo `kill $f`; ?>
Это опасно, хотя.
Я не знаю точных команд для выполнения, или если у вас есть такой тип управления или нет, или даже если вы работаете в Linux-системе. Если хочешь, я могу немного это изучить.
С наилучшими пожеланиями,
$ ( "# Нажмите"). Нажмите (функция () { //window.stop (); return false;