mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-12-02 11:48:08 +08:00
commit
e72d9b30c2
@ -22,6 +22,7 @@
|
||||
## Changed
|
||||
|
||||
- [#793](https://github.com/hyperf/hyperf/pull/793) Changed `protected` to `public` for `Pool::getConnectionsInChannel`.
|
||||
- [#811](https://github.com/hyperf/hyperf/pull/811) Command `di:init-proxy` does not clear the runtime cache, If you want to delete them, use `vendor/bin/init-proxy.sh` instead.
|
||||
|
||||
# v1.1.3 - 2019-10-24
|
||||
|
||||
|
@ -30,17 +30,17 @@ runtime/container/proxy/
|
||||
|
||||
Re-genenrate command
|
||||
```
|
||||
php bin/hyperf.php di:init-proxy
|
||||
vendor/bin/init-proxy.sh
|
||||
```
|
||||
|
||||
So the command to run unit test can use the following instead
|
||||
```
|
||||
php bin/hyperf.php di:init-proxy && composer test
|
||||
vendor/bin/init-proxy.sh && composer test
|
||||
```
|
||||
|
||||
Similarly, the command to start the server can also use the following instead
|
||||
```
|
||||
php bin/hyperf.php di:init-proxy && php bin/hyperf.php start
|
||||
vendor/bin/init-proxy.sh && php bin/hyperf.php start
|
||||
```
|
||||
|
||||
## Docker build failure
|
||||
|
@ -68,4 +68,4 @@ class FooAspect extends AbstractAspect
|
||||
|
||||
在部署生产环境时,我们可能会希望 Hyperf 提前将所有代理类提前生成,而不是使用时动态的生成,可以通过 `php bin/hyperf.php di:init-proxy` 命令来生成所有代理类,该命令会忽视现有的代理类缓存,全部重新生成。
|
||||
|
||||
基于以上,我们可以将生成代理类的命令和启动服务的命令结合起来,`php bin/hyperf.php di:init-proxy && php bin/hyperf.php start` 来达到自动重新生成所有代理类缓存然后启动服务的目的。
|
||||
基于以上,我们可以将生成代理类的命令和启动服务的命令结合起来,`vendor/bin/init-proxy.sh && php bin/hyperf.php start` 来达到自动重新生成所有代理类缓存然后启动服务的目的。
|
||||
|
@ -24,28 +24,33 @@ swoole.use_shortname = 'Off'
|
||||
代理类缓存一旦生成,将不会再重新覆盖。所以当你修改了已经生成代理类的文件时,需要手动清理。
|
||||
|
||||
代理类位置如下
|
||||
|
||||
```
|
||||
runtime/container/proxy/
|
||||
```
|
||||
|
||||
重新生成缓存命令,新缓存会覆盖原目录
|
||||
|
||||
```bash
|
||||
php bin/hyperf.php di:init-proxy
|
||||
vendor/bin/init-proxy.sh
|
||||
```
|
||||
|
||||
删除代理类缓存
|
||||
|
||||
```bash
|
||||
rm -rf ./runtime/container/proxy
|
||||
```
|
||||
|
||||
所以单测命令可以使用以下代替:
|
||||
|
||||
```bash
|
||||
php bin/hyperf.php di:init-proxy && composer test
|
||||
vendor/bin/init-proxy.sh && composer test
|
||||
```
|
||||
|
||||
同理,启动命令可以使用以下代替
|
||||
|
||||
```bash
|
||||
php bin/hyperf.php di:init-proxy && php bin/hyperf.php start
|
||||
vendor/bin/init-proxy.sh && php bin/hyperf.php start
|
||||
```
|
||||
|
||||
## PHP7.3下预先生成代理的脚本 执行失败
|
||||
|
@ -37,7 +37,7 @@ require BASE_PATH . '/config/container.php';
|
||||
|
||||
```
|
||||
# 重新生成代理类
|
||||
php bin/hyperf.php di:init-proxy
|
||||
vendor/bin/init-proxy.sh
|
||||
# 运行单元测试
|
||||
composer test
|
||||
```
|
||||
|
19
src/di/bin/init-proxy.sh
Executable file
19
src/di/bin/init-proxy.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
basepath=$(cd `dirname $0`; pwd)
|
||||
|
||||
echo ../../
|
||||
|
||||
if [ ! -f "composer.lock" ]; then
|
||||
echo "Not found composer.lock, please composer install first."
|
||||
exit
|
||||
fi
|
||||
|
||||
rm -rf runtime
|
||||
|
||||
echo "Runtime cleared"
|
||||
|
||||
php bin/hyperf.php di:init-proxy
|
||||
|
||||
echo "Finish!"
|
||||
|
@ -56,6 +56,7 @@
|
||||
}
|
||||
},
|
||||
"bin": [
|
||||
"bin/init-proxy.sh"
|
||||
],
|
||||
"scripts": {
|
||||
"cs-fix": "php-cs-fixer fix $1",
|
||||
|
@ -18,8 +18,6 @@ use Hyperf\Di\Annotation\Scanner;
|
||||
use Hyperf\Di\Container;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Symfony\Component\Console\Exception\LogicException;
|
||||
use Symfony\Component\Finder\Finder;
|
||||
use Symfony\Component\Finder\SplFileInfo;
|
||||
|
||||
class InitProxyCommand extends Command
|
||||
{
|
||||
@ -49,23 +47,13 @@ class InitProxyCommand extends Command
|
||||
|
||||
public function handle()
|
||||
{
|
||||
$this->warn('This command does not clear the runtime cache, If you want to delete them, use `vendor/bin/init-proxy.sh` instead.');
|
||||
|
||||
$this->createAopProxies();
|
||||
|
||||
$this->output->writeln('<info>Proxy class create success.</info>');
|
||||
}
|
||||
|
||||
protected function clearRuntime($paths)
|
||||
{
|
||||
$finder = new Finder();
|
||||
$finder->files()->in($paths)->name(['*.php', '*.cache']);
|
||||
|
||||
/** @var SplFileInfo $file */
|
||||
foreach ($finder as $file) {
|
||||
$path = $file->getRealPath();
|
||||
@unlink($path);
|
||||
}
|
||||
}
|
||||
|
||||
protected function getScanDir()
|
||||
{
|
||||
if (! defined('BASE_PATH')) {
|
||||
@ -91,11 +79,6 @@ class InitProxyCommand extends Command
|
||||
{
|
||||
$scanDirs = $this->getScanDir();
|
||||
|
||||
$runtime = BASE_PATH . '/runtime/container/';
|
||||
if (is_dir($runtime)) {
|
||||
$this->clearRuntime($runtime);
|
||||
}
|
||||
|
||||
$meta = $this->scanner->scan($scanDirs);
|
||||
$classCollection = array_keys($meta);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user