UpdateModule.class.php 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * @name eolinker ams open source,eolinker开源版本
  4. * @link https://www.eolinker.com/
  5. * @package eolinker
  6. * @author www.eolinker.com 广州银云信息科技有限公司 ©2015-2018
  7. * eoLinker是目前全球领先、国内最大的在线API接口管理平台,提供自动生成API文档、API自动化测试、Mock测试、团队协作等功能,旨在解决由于前后端分离导致的开发效率低下问题。
  8. * 如在使用的过程中有任何问题,欢迎加入用户讨论群进行反馈,我们将会以最快的速度,最好的服务态度为您解决问题。
  9. *
  10. * eoLinker AMS开源版的开源协议遵循Apache License 2.0,如需获取最新的eolinker开源版以及相关资讯,请访问:https://www.eolinker.com/#/os/download
  11. *
  12. * 官方网站:https://www.eolinker.com/
  13. * 官方博客以及社区:http://blog.eolinker.com/
  14. * 使用教程以及帮助:http://help.eolinker.com/
  15. * 商务合作邮箱:market@eolinker.com
  16. * 用户讨论QQ群:284421832
  17. */
  18. class UpdateModule
  19. {
  20. /**
  21. * 自动更新项目
  22. * @param $updateURI string 更新地址
  23. * @return bool
  24. * @throws Exception
  25. */
  26. public function autoUpdate($updateURI)
  27. {
  28. try {
  29. set_error_handler('err_handler');
  30. $ch = curl_init($updateURI);
  31. //跳过证书检查
  32. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  33. //检查证书中是否设置域名
  34. @curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  35. @curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  36. file_put_contents('../release.zip', curl_exec($ch));
  37. curl_close($ch);
  38. $zip = new ZipArchive;
  39. if ($zip->open('../release.zip'))
  40. $zip->extractTo('../');
  41. $zip->close();
  42. //备份数据库
  43. $backupDao = new BackupDao();
  44. $sql = $backupDao->getDatabaseBackupSql();
  45. $file_name = "eoLinker_backup_database_" . time() . '.sql';
  46. if (!file_put_contents(realpath('./dump') . DIRECTORY_SEPARATOR . $file_name, $sql)) {
  47. return FALSE;
  48. }
  49. //接下来开始获取旧数据库的全部结构
  50. $updateDao = new UpdateDao;
  51. $updateDao->updateDatabase();
  52. //执行额外的更新操作,主要用于在版本过渡的过程中,数据以及文件发生变化等情况
  53. if (file_exists(PATH_FW . DIRECTORY_SEPARATOR . 'Common/UpdateFunction.php'))
  54. quickRequire(PATH_FW . DIRECTORY_SEPARATOR . 'Common/UpdateFunction.php');
  55. return TRUE;
  56. } catch (\Exception $e) {
  57. throw new Exception($e->getMessage(), 100001);
  58. }
  59. }
  60. /**
  61. * 手动更新项目
  62. * @return bool
  63. * @throws Exception
  64. */
  65. public function manualUpdate()
  66. {
  67. try {
  68. //备份数据库
  69. $backupDao = new BackupDao();
  70. $sql = $backupDao->getDatabaseBackupSql();
  71. $file_name = "eoLinker_backup_database_" . time() . '.sql';
  72. if (!file_put_contents(realpath('./dump') . DIRECTORY_SEPARATOR . $file_name, $sql)) {
  73. return FALSE;
  74. }
  75. //接下来开始获取旧数据库的全部结构
  76. $updateDao = new UpdateDao;
  77. $updateDao->updateDatabase();
  78. //执行额外的更新操作,主要用于在版本过渡的过程中,数据以及文件发生变化等情况
  79. if (file_exists(PATH_FW . DIRECTORY_SEPARATOR . 'Common/UpdateFunction.php'))
  80. quickRequire(PATH_FW . DIRECTORY_SEPARATOR . 'Common/UpdateFunction.php');
  81. return TRUE;
  82. } catch (\Exception $e) {
  83. throw new Exception($e->getMessage(), 100001);
  84. }
  85. }
  86. }
  87. ?>