Убить фоновый php скрипт (виртуальный хостинг)

Я создал скрипт, который работает в фоновом режиме, используя функцию ignore_user_abort(). Однако я был достаточно глуп, чтобы не вставлять какой-либо код для остановки скрипта, и теперь он отправляет электронные письма каждые 30 секунд...

Есть ли способ остановить сценарий? Я нахожусь на виртуальном хостинге, поэтому у меня нет доступа к командной строке, и я не знаю PID.

4 ответа

Есть ли способ остановить сценарий? Я нахожусь на виртуальном хостинге, поэтому у меня нет доступа к командной строке, и я не знаю PID.

Тогда нет.

Но вы уверены, что у вас нет доступа к оболочке? Даже через PHP? Если вы это сделаете, вы можете попробовать....

<?php

print `ps -ef | grep php`;

... и если вы можете определить процесс из этого, то....

<?php

$pid=12345; // for example.
print `kill -9 $pid`;

И даже если у вас нет доступа для запуска команд оболочки, вы можете найти pid в /proc (в системе linux) и завершить его, используя расширение POSIX....

<?php

$ps=glob('/proc/[0-9]*');
foreach ($ps as $p) {
    if (is_dir($p) && is_writeable($p)) {
        print "proc= " . basename($p);
        $cmd=file_get_contents($p . '/cmdline');
        print " / " . file_get_contents($p . '/cmdline');
        if (preg_match('/(php).*(myscript.php)/',$cmd)) {
            posix_kill(basename($p), SIGKILL);
            print " xxxxx....";
            break;
        }
        print "\n";
    }  
}

Я пришел к этой теме Вчера! У меня по ошибке был бесконечный цикл на странице, которая не должна была посещаться, и это увеличило мой I/O to 100 а также CPU usage to 100I/O был из-за некоторых php errors и это становилось logged и размер файла журнала увеличивался выше, чем кто-либо мог подумать.

Ни один из вышеперечисленных трюков не помог мне shared hosting,

МОЕ РЕШЕНИЕ

  1. В cPanel перейдите к версии PHP (кроме текущей)

  2. Выберите любую версию PHP на данный момент.

  3. А потом Apply Changes,

ПРИЧИНА, ПОЧЕМУ ЭТО РАБОТАЛО

Скрипт с бесконечным циклом с некоторыми ошибками php был процессом, поэтому мне просто нужно было его убить, изменение версии php усилило перезапуск сервисов, таких как php и Apache, и, так как был задействован перезапуск, более ранние процессы были убиты, и я был расслаблен как I/O а также CPU использование стабилизировалось. Кроме того, я исправил эту ошибку, прежде чем вручную менять версию php:)

Просто. Позвоните в службу поддержки, отмените ее. В следующий раз не выполняйте то, что вы не можете контролировать.

Как вы развернули скрипт? конечно, вы можете просто удалить его (если это приемлемый вариант). в противном случае измените его и вставьте некоторую логику, чтобы разрешить ему отправлять почту один раз каждые n минут / часов / дней в зависимости от времени сервера?

число рейнольдса остановка выполнения сценария (или, скорее, система пытается его выполнить), как вы запланировали его выполнение? это какой-то тип графического интерфейса для crontab или что-то? Вы не можете просто отменить то, что вы там сделали (поскольку у вас нет доступа к командной строке / терминалу)?

ограбить Ганли

Другие вопросы по тегам