-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于 windows 的完整支持思路 #1074
Comments
思路是可以,但是很难的,因为这些差异完全是由于内核层面的差异导致的,尤其是进程管理机制,Unix 上主要是主进程通过经典的 fork “复制”了一个子进程出来,然后再走不同的逻辑让子进程来负责不同的事。而这点在 Windows 的内核上则完全不同。 如果想实现这些东西,自己实现并不是理智的方法,目前最好还是借助于虚拟机,WSL 或者类似于 cygwin 这样的东西来实现。 另外,IO 多路复制机制用到的 event 扩展,也均不支持 Windows,即使在 Windows 上实现了兼容的进程管理,信号机制,也不具备生产价值。 |
在 swow 上看到了些资料,貌似有机会达成在 windows 上运行 “满血版 workerman” 1. 多进程相关能力2. 信号相关能力3. IO 相关能力
https://github.com/walkor/workerman/blob/master/src/Events/Swow.php 4. 其它特性
@xpader |
@fromyb Swow 是一个PHP的扩展,它做这些事是合理的,你说的 Workerman 做一个 Engine 层来适配这个,确实有可能,但我还是认为不值得: 用 Windows 多半是用来做开发,花这么大精力仅为了适配开发,就跟我前面说的要写大量代码来适配这个似乎并不值得,现在 Windows 上的 WSL 已经很成熟了,用起来很简单,而除了 Windows 其它用到的开发环境几乎全是支持 Unix 的,MacOS、Linux、FreeBSD,抽这个层仅仅是为了 Windows。 当然我不是不支持实现“满血版 workerman”,但是从 Workerman 的实现和线路来看,花太大精力实现这样一个层不太合适。 |
目前 windows 上运行 workerman 对比 linux 功能不完整的原因,
看起来主要是因为 posix, pcntl 这两个拓展提供的相应信号、进程相关函数。
能否抽离出针对操作系统的执行层来提供上述函数的统一封装,
然后将现在
Worker.php
对 posix, pcntl 的直接调用换成使用上述执行层。这样做的好处是在各个各种操作系统都能使用完整的 workerman 特性,
同时类似 adapterman 的 fpm 兼容也可以整合到上述的执行层 cli 来完成。
The text was updated successfully, but these errors were encountered: