$this->rootPath 是设置的存储路径,只要这段代码放到 onMessage中就无法使用,不放onMessage中,放其他非workman代码中,就正常了,求大神解答?
//判断保存目录是否存在
if(!file_exists($this->rootPath)){
mkdir($this->rootPath,0777,true);
}
$fp = fopen($this->rootPath.$this->savename.".".$this->ext, 'w');
为啥要这么写,业务用途:
主要这边需要开发一个远程在线下载图片/附件到服务器功能,传统的做法轮询,但是浪费服务器资源,后改为websocket了,目前无法创建存储文件夹
问题解决了:
因为workerman是基于phpcli的,phpcli路径和普通的路劲不一样,我这里的$this->rootPath 是相对路径,所以出错了,改为绝对路径就行了;
遇到同样问题,后来翻php手册发现是file_exists函数自带缓存功能,貌似php文件操作的函数都有缓存,操作磁盘文件前最好调用下 clearstatcache()
http://php.net/manual/zh/function.file-exists.php