发送信号通过php进程
我想通过使用网页中的按钮发送一个杀死-10(SIGUSER1)到进程ID,我尝试了不同的方式来发送信号,同时通过PHP变量(持有PID)到外壳。下面是我有:发送信号通过php进程
$next = posix_kill($pid3, 10);
眼下,这是给我下面的错误:
PHP Warning: posix_kill() expects parameter 1 to be long,
string given in /var/www/parse2.php on line 15
请告知
就试试这个:
$next = posix_kill((long)$pid3, 10);
Intval因此,警告不会消失,返回一个int,但它可能会工作
所以,既然你似乎有一个问题仍然较好会像建议其他地方:
$next = posix_kill(intval($pid3), 10);
如果这不起作用,我会建议告诉我们你使用的PHP版本。
除非你有随之而来的空间,然后尝试:
$next = posix_kill(intval(trim($pid3)), 10);
更新:
所以,现在你得到了它的工作,你需要捕获的信号,并利用它做些什么,你需要附加一个回调函数,因为我不知道你的其他代码。你需要的东西是这样的:
pcntl_signal(SIGUSR1, "sig_handler");
然后做一些对信号:
function sig_handler($sig) {
switch($sig) {
case SIGUSR1:
// logtrace(1,"received USR1 signal.");
break;
...
我只是想想1的事情,我认为我们正在发送信号的过程是一个PHP脚本。否则,我认为你得到它的工作,但并没有做很多(但)
当我使用它时,出现语法错误:PHP解析错误:语法错误,意外'$ pid3'(T_VARIABLE) – xxethanixx
按照其他地方的建议尝试intval()。可怕地[posix_kill](http://php.net/manual/en/function.posix-kill.php)需要一个int,奇怪的是它需要很长的时间。 –
太好了,我被某个人贬低了..德克萨斯州告诉我为什么。试图帮助别人... –
我认为你可以将其转换为整数,那么它应该工作:
$next = posix_kill((int)$pid3, 10);
你的可伸缩是一个字符串或其他任何东西。
或试试这个:
Umm。你在那里得到了一些东西。 '8 |' –
大多数PHP函数会尝试他们的争论对象转换,如果可能适当的数据类型。如果可能的话,它非常常见于php函数,以便将字符串自动转换为数字类型,如int或float。
但是,有些只是没有这样写,你需要提供手册中指定的数据类型。
“long”是一个数字类型,所以只需转换为整数。这个假设$ pid3是一个数字字符串,这样就可以得到合理的结果。
$next = posix_kill((int) $pid3, 10);
好吧,所以在php脚本在/var/www/parse2.php 15行什么?试试echo $ pid3 ... –
-_-第15行是:$ next = posix_kill($ pid3,10); 我也加了echo“$ pid3”;并且它回显正确 – xxethanixx
然后它就是这样说的,$ pid3是一个字符串...不是很长... –