没有不值得去解决的问题,也没有不值得去学习的技术!

通过Composer升级Yii2.0.9、Hprose for PHP 2.0之后出现兼容性问题的解决

"require": { "hprose/hprose-yii": "dev-master" }

1、基于Hprose for PHP 1.5.6、Yii2.0.7的RPC的基本实现,请参考网址:https://www.shuijingwanwq.com/2016/03/24/953/

2、通过Composer升级Yii2,执行命令:composer update,如图1:

通过Composer升级Yii2,执行命令:composer update
图1

3、打开网址:http://trade.service.ygt.cm/area/get-area-mobile ,报错,如图2:
PHP Warning – yii\base\ErrorException
include(E:\wwwroot\service.ygt.cm\vendor\hprose\hprose\src\Hprose\Yii\Server.php): failed to open stream: No such file or directory

PHP Warning – yii\base\ErrorException
图2

4、分析原因,发现升级之后,提交SVN时,E:\wwwroot\service.ygt.cm\vendor\hprose\hprose\src\Hprose\Yii 已经缺少了,如图3:

分析原因,发现升级之后,提交SVN时,E:\wwwroot\service.ygt.cm\vendor\hprose\hprose\src\Hprose\Yii 已经缺少了
图3

5、E:\wwwroot\service.ygt.cm\trade\controllers\HproseController.php 的源代码截图,引用的类文件已经不存在,自然报错了,如图4:

引用的类文件已经不存在,自然报错了
图4

6、打开网址:https://github.com/hprose/hprose-php/wiki/%E5%AE%89%E8%A3%85 ,编辑E:\wwwroot\service.ygt.cm\composer.json,如图5:

“require”: {
“hprose/hprose-yii”: “dev-master”
}

    "require": {         "hprose/hprose-yii": "dev-master"     }
图5

7、在Windows PowerShell中执行命令:composer update,如图6:
安装了yiisoft/yii,可以暂不去管的,建议删除掉;

安装了yiisoft/yii,可以暂不去管的,建议删除掉
图6

8、打开网址:http://trade.service.ygt.cm/area/get-area-mobile ,报错,如图7:
Unknown Property – yii\base\UnknownPropertyException
Getting unknown property: yii\web\Request::session

Unknown Property – yii\base\UnknownPropertyException Getting unknown property: yii\web\Request::session
图7

9、编辑E:\wwwroot\service.ygt.cm\vendor\hprose\hprose-yii\src\Hprose\Yii\Service.php,如图8:

// $context->session = $request->session;
$context->session = \Yii::$app->session;

// $context->session = $request->session; $context->session = \Yii::$app->session;
图8

10、打开网址:http://trade.service.ygt.cm/area/get-area-mobile ,如图9:

打开服务端,符合预期
图9

11、客户端调用,出错,如图10:

Hprose\Future Object ( [state] => 1 [value] => Hprose\Future Object ( [state] => 0 [value] => [reason] => [subscribers:Hprose\Future:private] => Array ( ) ) [reason] => [subscribers:Hprose\Future:private] => Array ( ) )

客户端调用,出错:Hprose\Future Object ( [state] => 1 [value] => Hprose\Future Object ( [state] => 0 [value] => [reason] => [subscribers:Hprose\Future:private] => Array ( ) ) [reason] => [subscribers:Hprose\Future:private] => Array ( ) )
图10
12、根据图6的提示,安装Hprose for PHP的pecl扩展,安装它之后可以有效的提高 Hprose 的性能。打开网址:https://github.com/hprose/hprose-php/wiki/hprose-%E7%9A%84-pecl-%E6%89%A9%E5%B1%95 ,如图11:

安装Hprose for PHP的pecl扩展,安装它之后可以有效的提高 Hprose 的性能
图11

13、经分析,2.0版本,客户端调用,默认为异步,如果需要同步调用,则$async = false,如图12:

经分析,2.0版本,客户端调用,默认为异步,如果需要同步调用,则$async = false
图12

14、运行客户端调用,符合预期,如图13:

运行客户端调用,符合预期
图13

 

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理