2013-09-06 2 views
0

Я работаю над системой, в которой я хотел бы создать и уничтожить cronjobs. Теперь, когда я создать следующий cronjobs? Например:получение cron specific pid

1**** /path/users.php?id=2 
1**** /path/users.php?id=3 

Тогда я хотел бы убить первый cronjob users.php ID = 2 мне интересно, если каждый хрон создает определенный ProcessID (PID) через UNIX и если да, то как я могу поймать этот конкретный processid?

Я пробовал команду echo $$, тем не менее, я сомневаюсь, что эта команда генерирует этот конкретный ПИД-код Cron.

+1

Что я обычно делаю, чтобы копаться в/Proc файловая система, перебирать процесса каталогов и прочитать в них файл, содержащий имя. – icbytes

ответ

0

Если вы напрямую позвонить сценарий с PHP, а не через HTTP вы можете поместить это в PHP скрипт:

file_put_contents("/absolute_path/cronjob_users_id_2.pid", getmypid()); 

Об этом пишет PID процесса в файле.

Если сценарий в конце концов приходит к концу, вы можете просто удалить файл:

unlink($pidfile); 
+0

Решение фактически использовало команду echo $$ на скрипте, который я выполнял в этот момент (users.php). Я читал, что функция getmypid() не была правильной функцией, чтобы убить этот конкретный процесс. –

0

Попробуйте это

function remove($id) 
    { 
     $file = file(path/to/cron_file); 
     $content = ''; 

     foreach($file as $line) 
     { 
      list($url, $t_id) = explode('?id=', $line); 

      if(trim($t_id) != $id) 
      { 
       $content .= $line; 
      } 
     } 

     file_put_contents(path/to/cron_file, $content); 
    } 
Смежные вопросы