workman onMessage回调中 无法使用file_exists mkdir 等函数

飞哥🏅

$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 是相对路径,所以出错了,改为绝对路径就行了;

3078 1 0
1个回答

yongdao35

遇到同样问题,后来翻php手册发现是file_exists函数自带缓存功能,貌似php文件操作的函数都有缓存,操作磁盘文件前最好调用下 clearstatcache()

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

http://php.net/manual/zh/function.file-exists.php

  • 暂无评论
年代过于久远,无法发表回答
×
🔝