workerman 启动报错,already running 。按照手册 killall php , ps aux|grep WorkerMan|awk '{print $2}'|xargs kill -9,显示没有那个进程,在测试服务器上可以跑起来,上正式服务器就显示已经在运行。看论坛有些朋友说是之前运行脚本执行过就会有成功记录,不知道是不是跟这个相关
ps auxf 看下workerman进程在不在
进程没有
找到workerman的pid文件删掉。pid默认位置与workerman源码目录的上一层目录。
问题就是没有发现生成了workerman.pid这个文件
那就设置下pid存储位置,比如
... Worker::$pidFile='/your/path/wm.pid'; Worker::runAll();
注意不要放到/tmp目录下 然后启动。
/tmp
在regiset 里面指定了 pidFile。 启动的时候还是显示already running ,并且pid文件也没有生成,指定的目录也有写入权限
尝试了一下吧worker源码里面lock函数的,逻辑改一下。$_startFile句柄不存或则有加锁,workerman可以跑起来。
你们有什么特殊的用法么?$_startFile怎么会不存在呢
@1:没有吧 gateway的例子基础之上改的
@1:protected static function lock() { $fd = \fopen(static::$_startFile, 'r'); if (!$fd || !flock($fd, LOCK_EX)) { static::log("Workerman[".static::$_startFile."] already running"); exit; } } 这里的flock判断为true
尝试 killall -9 php
这个尝试过了、
我之前不小心把正在运行的程序删除了,用同个端口号重新写个程序,启动时和你的错误一样,我最后的办法是新建一个被删除文件同名的程序,程序中使用的端口号和之前一致,然后使用php xxx.php stop
我也遇到这个问题了。 一开始下载了Workerman,并按照demo随便写了一个start.php,运行后显示already running。 后来删除了上述的workerman项目和log,又去下了个Gateway,直接运行start.php,也只显示以下一句话:
Workerman[/var/www/html/GatewayWorker/start.php] already running
而且此时使用ps aux|grep WorkerMan之类的操作时根本找不到进程。因此也不知道是根据什么判定的。
和楼上某位老哥一样,将Worker::lock()方法直接返回true就能正常运行了。 换台服务器也是完全可行的。就是不知道还有哪里有问题。。
上述问题发生在vagrant-virtualBox虚拟机的nfs模式共享文件夹中。改为virtualbox共享方式就不会报了。 至于原因尚未弄清。
ps auxf 看下workerman进程在不在
进程没有
找到workerman的pid文件删掉。pid默认位置与workerman源码目录的上一层目录。
问题就是没有发现生成了workerman.pid这个文件
那就设置下pid存储位置,比如
注意不要放到
/tmp
目录下然后启动。
在regiset 里面指定了 pidFile。 启动的时候还是显示already running ,并且pid文件也没有生成,指定的目录也有写入权限
尝试了一下吧worker源码里面lock函数的,逻辑改一下。$_startFile句柄不存或则有加锁,workerman可以跑起来。
你们有什么特殊的用法么?$_startFile怎么会不存在呢
@1:没有吧 gateway的例子基础之上改的
@1:protected static function lock()
{
$fd = \fopen(static::$_startFile, 'r');
if (!$fd || !flock($fd, LOCK_EX)) {
static::log("Workerman[".static::$_startFile."] already running");
exit;
}
}
这里的flock判断为true
尝试 killall -9 php
这个尝试过了、
我之前不小心把正在运行的程序删除了,用同个端口号重新写个程序,启动时和你的错误一样,我最后的办法是新建一个被删除文件同名的程序,程序中使用的端口号和之前一致,然后使用php xxx.php stop
我也遇到这个问题了。
一开始下载了Workerman,并按照demo随便写了一个start.php,运行后显示already running。
后来删除了上述的workerman项目和log,又去下了个Gateway,直接运行start.php,也只显示以下一句话:
Workerman[/var/www/html/GatewayWorker/start.php] already running
而且此时使用ps aux|grep WorkerMan之类的操作时根本找不到进程。因此也不知道是根据什么判定的。
和楼上某位老哥一样,将Worker::lock()方法直接返回true就能正常运行了。
换台服务器也是完全可行的。就是不知道还有哪里有问题。。
上述问题发生在vagrant-virtualBox虚拟机的nfs模式共享文件夹中。改为virtualbox共享方式就不会报了。
至于原因尚未弄清。