[PHP] swoole在daemonize模式下,chdir失效问题

swoole version: 1.9.6

其实跟swoole的版本无关,因为原代码体系,fpm模式下,在启动的时候,是使用 chdir 函数改变了当前目录的,而其它代码在做类的自动加载的时候,都是写的相对地址,而不是绝对地址。

问题就来了,swoole是多进程的,在daemonize模式下,chdir改变当前目录,在其它进程下是不生效的,所以有时候,不使用daemonize没问题,而使用daemonize会莫名的出现找不到类的情况。

解决方法是,在几个启动的回调里面同时也改变一下目录

$serv->on(
    ‘workStart‘,
    function ($server, $fd) {
        chdir(ROOT_PATH); //假设前面已经设定了这个ROOT_PATH的常量
        //其它代码
    }
); 

$serv->on(
    ‘tast‘,
    function ($server, $fd) {
        chdir(ROOT_PATH); //假设前面已经设定了这个ROOT_PATH的常量
        //其它代码
    }
); 

相关文章:http://hongtoushizi.iteye.com/blog/2224764

Have fun with swoole!

时间: 2024-08-03 11:26:46

[PHP] swoole在daemonize模式下,chdir失效问题的相关文章

QQ浏览器兼容模式下Cookie失效 导致的NetCore Cookie认证失效

最近在写NetCore项目采用的是NetCore的Cookie认证.结果偶然发现QQ浏览器登录不好用.这里先需要了解一下set-cookie中的SameSite属性  导致原因 首先Fiddler 4查看一下两次请求 第一次Post进行登录 返回302重定向到站点首页并带回Cookie (一切正常) 但是看第二条http请求,返回又是302 ,查看相关信息,请求时Cookie 根本没带入 到此基本知道整个登录失败是因为Cookie没有带入请求头. 解决方案: NetCore Cookie认证下如

IIS8集成模式下打开静态资源被aspx处理程序处理,StaticFileModule失效问题分析

问题描述: 打开js,css,jpg之类的静态资源文件触发了asp.net mvc的权限认证,并不是直接返回静态内容 问题分析: StaticFileModule 失效 ,可能是文件权限问题 问题解决: 由于在集成模式下,默认进程标识是应用程序池名称相同的"用户", 如应用程序池为 tom, 那么在进程管理器中,w3wp.exe的用户即为tom 而IIS中要动态的为这种标识设计权限则需要同时给 IIS_IUSERS组  和  IUSR组设置完全控制权限!!! 记得是同时设置. 如果仅给

Apache Spark源码走读之15 -- Standalone部署模式下的容错性分析

欢迎转载,转载请注明出处,徽沪一郎. 概要 本文就standalone部署方式下的容错性问题做比较细致的分析,主要回答standalone部署方式下的包含哪些主要节点,当某一类节点出现问题时,系统是如何处理的. Standalone部署的节点组成 介绍Spark的资料中对于RDD这个概念涉及的比较多,但对于RDD如何运行起来,如何对应到进程和线程的,着墨的不是很多. 在实际的生产环境中,Spark总是会以集群的方式进行运行的,其中standalone的部署方式是所有集群方式中最为精简的一种,另外

RedHat Linux文本模式下乱码解决方法

如果在安装RedHat Linux时选择中文未缺省语言,在文本模式下会出现乱码情况,对于在CLI(command-line interface,命令行界面)方式下调试程序时诸多不便,因为出错信息全是乱码,下面说明乱码问题如何解决: 方法1: 1.locale命令查看当前系统使用的语言 可以看到当前系统使用中文语言 2.export LC_ALL=POSIX修改LC_ALL语言选项 3.locale命令再次查看 可以看到语言设置已修改,但该方法在用户注销或重启后会失效,若要保存设置请看方法2 方法

HA模式下历史服务器配置

笔者的集群是 HA 模式的( HDFS 和 ResourceManager HA).在 ” Hadoop-2.5.0-cdh5.3.2 HA 安装" 中详细讲解了关于 HA 模式的搭建,这里就不再赘述.但网上直接将关于 HA 模式下的历史服务器的配置资料却很少. 笔者在思考,如果配置在 mapred-site.xml 中就设置一台历史服务器,那么当这台机器挂了,那么能不能有另一台机器来承担历史服务器的责任,也就是笔者理想当然的 jobhistory server HA 模式.后面经过各自尝试,得

RealEvo IDE专家模式下应用工程MakeFile的修改

1. 适用范围 本文档适用于RealEvo IDE开发环境下的应用工程的自定义. 2. RealEvo IDE编译框架 2.1      Makefile文件与框架 RealEvo IDE开发环境下使用的Makefile文件包含常规的Makefile和mk文件.Makefile一般用来指定整个工程的总体编译规则,而mk文件主要描述工程下常规的需要生产的目标的编译规则等. 整个RealEvo IDE开发环境的编译框架主要是在BASE工程中定义的,主要存在于{$BASE}/libsylixos/mk

IIS7部署报错 500.22错误 检查到这集成托管模式下不使用的ASP.NET配置

2014-08-08 公司的一个项目,环境为: .Net 4.0 + MVC3,部署在Windows Server 2003R2 IIS6.0上面运行正常, 迁移到新服务器Windows Server 2008R2,部署在 IIS7.0上, 应用程序池中,托管管道模式中选中了“集成”模式,如下图: 其他配置如下: 配置完成后,访问出错报错, 最后检查出了原因:该项目中的web.config配置文件不适合IIS7.0. 于是将应用程序池的管道模式选择为“经典”模式 再次访问一切正常. 问题的根本原

ASIHTTPRequest 在release(打包)模式下数据获取或post失败问题

ASIHTTPRequest 在relase模式下失效 表现为,调用网络请求后没有任何反应 原因之一: ARC模式下,在ASIHTTPRequest 前面会加上__weak来解决循环应用,这个__weak引起的问题 解决 :    ASIFormDataRequest *asiRequest = [ASIFormDataRequest requestWithURL:aurl];                 __weak typeof(ASIFormDataRequest) *request

Spark sql 在yarn-cluster模式下找不到表

在hive里建一个数据库test,在数据库里建了一张表user,然后在Spark程序中使用Spark sql读取这张表 "select * form test.user" 当部署模式是spark stand模式和yarn-client模式时,程序可以正常运行,但yarn-cluster模式就报了找不到"test.user"表的错误. 解决办法: spark和hive整合,把hive-site.xml加到spark根目录的conf下,所以,要在提交Spark任务的时候