博客文章
最近发表的话题
最近发表的评论
  • PHP-FPM vs Swoole at 4个月前

    @medz 多谢指点,能帮我指正下文章具体错在哪里吗?或者有哪些不足的,我好具体去研究学习一下。

    另外你说的那些好像我也没说过吧?

  • PHP-FPM vs Swoole at 4个月前

    @岁月神偷 请把您觉得理解到为的 php-fpm 发表下,OK?键盘侠。

  • [项目推荐] Corcel 让你在 WordPress 中使用 Laravel at 6个月前

    @Summer 更准确来说,Corcel 是一个基于 Eloquent 实现的 WordPress ORM。Eloquent 能用在哪里,那作为 WordPress ORM 的 Corcel 就能用在哪里。

    Corcel 的好处是让项目脱离了笨重的 WordPress 代码, WordPress 只做后台数据管理,其他部分可以用任意 MVC 框架来做。不仅仅是 Laravel ,还可以是 Lumen 甚至是 Slim 或者其他框架。

    所以核心来说,使用 WordPress 数据,而不是使用 WordPress 框架,再准确点翻译可以叫 《Corcel 让你在 Laravel 中使用 WordPress(数据)》

    就个人体会来说,在 WordPress 项目中只使用 Eloquent 比较鸡肋,但是在 Laravel 项目中有调用 WordPress 数据的需求时,Corcel 就很方便了。

  • [项目推荐] Corcel 让你在 WordPress 中使用 Laravel at 6个月前

    @Summer 标题的翻译有偏差,原文是 Laravel and WordPress together with Corcel。不逐字翻译,翻译成《Corcel 让你在 Laravel 中使用 WordPress》更准确,其实不仅是 Laravel 甚至可以是 any php application,但是关键的重点是在其他框架中使用 WordPress,而不是在 WordPress 中使用 Laravel。

  • Web 开发进阶指南 at 6个月前

    @CismonX 多谢,笔误了,7.2 之前线程是不安全的,不过也是可以用的。对于 PHP-CPP 或 PHP-X 还是 zephir 这种东西,大众来说肯定是不推荐踩坑了,有想法的人可以试试想法和构思。

  • PHP-FPM vs Swoole at 6个月前

    @Max 不仅仅 epoll 还有 select/poll/kqueue 这些都是 IO 复用的各种方式(也可以说是机制,不是什么模式),有一系列系统调用函数。Reactor 也可以叫 EventLoop,Event 是核心,Loop 是机制,Loop 可以用 select/poll/epoll/kqueue 中的任意方式。无论 epoll 还是 reactor 都是技术也是思想,解决不同的问题。照这个思路了解,然后你再来看看多线程有什么好处。

  • PHP-FPM vs Swoole at 6个月前

    @Max nginx 只负责 reactor,worker 部分由第三方负责,比如 nginx + php-fpm,php-fpm 在这里其实就是 worker,worker 还可以是处理其他语言的进程。

  • PHP-FPM vs Swoole at 6个月前

    @Max Nginx 还是 Swoole 都是 epoll 方式的 IO 复用,只不过 Nginx 是多进程 Reactor,Swoole 是多线程 Reactor + 多进程 Worker 的。golang 是单线程Reactor + 多线程协程,现在 swoole 也有协程了。

  • PHP-FPM vs Swoole at 6个月前

    @Max epoll 是一种思想并不只是 epoll 这一个函数,每个 reactor 都是 I/O 复用的。无论 reactor_num 还是 worker_num 都可以设置的,reactor_num 不能大于 worker_num,还有其实 swoole 的 worker 还可以是多线程的。

  • PHP 项目 如何进行 性能优化 一 ( PHP 使用上的性能优化) at 6个月前

    有几点讲的不太好
    比如魔术方法,问题本身不在使用魔术方法上,而是有的人在实现魔术方法的时候,写了一堆有问题的代码。
    还有减少内存消耗,实际情况用 yield 等生成器之类的例子也很有意义,比如 range 的例子。

  • curl 用完千万别忘 close ! at 6个月前

    关闭 curl 句柄,加不加 finally 从你这代码看应该没区别。如果是捕获 curl 的错误,最好用 curl_errno/curl_error,比如:

    curl_exec($ch);
    if(curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch);
    }
    curl_close($ch);

    另外,我怀疑你确定是 try catch finally 的问题吗?

  • PHP 引用是个坑,请慎用 at 6个月前

    @839891627 变量都是有作用域的,方法上加 & 的作用就是为了跨域修改变量的内容。

    引用的概念有空我可以发表一篇文章,这里先预热一下:

    引用其实都是变量和变量之间的,简单来说引用的目的是为了在不同作用域内,用不同变量操作同一内容(zval)。 体现在三方面:

    • Assign By Reference(引用赋值)
    • Pass By Reference(引用传递)
    • Return By Reference(引用返回)

    Return By Reference 中文翻译理解起来太奇怪了,我会理解为:通过方法(函数)返回引用变量。函数返回的变量大体有三种形式:

    • 函数内部声明的变量,函数执行完毕变量就销毁了,作为引用变量返回是毫无意义的。
    • 函数的 static 变量,如果需要是可以作为引用变量返回的。
    • 函数内部的 global 变量,global 变量就是引用变量。
    • 对象的属性,在必要的时候可以通过返回引用变量的方式修改 protected/private 属性。
  • 使用 PHP 来做 Vue.js 的 SSR 服务端渲染 at 7个月前

    @OneStep SSR 是为了同构,以前 PHP 负责的页面交给了 JS 来做了,但是 JS 无法像以前 HTML 那样整合到后端,后端不能执行 JS,不过 Google 出了 V8,接着就有了 Node.js,因为 V8 的存在,其他语言也写了相应的扩展库,PHP 里的就是 V8JS 这个家伙,文中用到的扩展就是这个。

    V8JS 带来的意义就是可以 PHP 端执行 JS 了,解决前端 JS 写的 UI 组件整合到后端的问题。

    之前我写过一个 execjs 的库,感兴趣可以看看,这里是 vue 的例子,比文章的清晰简洁。

    https://github.com/chenos/execjs/blob/master/examples/vue-router/index.php