小编Rap*_*lié的帖子

json_decode和内存清除

我有一个大型JSON文件列表(最小文件是500 Ko,最大文件是100 Mo).

我需要独立处理每个文件.我的问题是每个文件后内存使用量越来越多,即使我清除了所有内存.

例:

foreach ($files as $file) {
    json_decode(file_get_contents($file->getRealpath()), true);

    $memory = memory_get_usage(true);
    echo 'Memory: '.@round($memory / pow(1024,($i=floor(log($memory, 1024)))), 2).' '.['b', 'kb', 'mb', 'gb', 'tb', 'pb'][$i]."\n";

    gc_collect_cycles();
}
Run Code Online (Sandbox Code Playgroud)

结果:

Memory: 6 mb
(...)
Memory: 6 mb
Memory: 6 mb
Memory: 10 mb
Memory: 10 mb
Memory: 10 mb
(...)
Memory: 12 mb
Memory: 12 mb
Memory: 12 mb
(...)
Memory: 490 mb
Memory: 490 mb
Memory: 490 mb
(...)
Memory: 946 mb
Memory: 944 mb
Memory: 944 mb …
Run Code Online (Sandbox Code Playgroud)

php memory

6
推荐指数
1
解决办法
1103
查看次数

如果结果以单词开头,则提升

我使用Elasticsearch使用ngram过滤器进行自动完成搜索.如果它以search关键字开头,我需要提升结果.

我的查询很简单:

"query": {
   "match": {
      "query": "re",
      "operator": "and"
   }
}
Run Code Online (Sandbox Code Playgroud)

这是我的结果:

  • 重新加入
  • Couture等重新润色
  • 重新开始

但我希望他们这样:

  • 重新加入
  • 重新开始
  • Couture等重新润色

如何从关键字开始提升结果?

万一它可以帮助,这是我的映射:

{
    "settings": {
        "analysis": {
            "analyzer": {
                "partialAnalyzer": {
                    "type": "custom",
                    "tokenizer": "ngram_tokenizer",
                    "filter": ["asciifolding", "lowercase"]
                },
                "searchAnalyzer": {
                    "type": "custom",
                    "tokenizer": "standard",
                    "filter": ["asciifolding", "lowercase"]
                }
            },

            "tokenizer": {
                "ngram_tokenizer": {
                    "type": "edge_ngram",
                    "min_gram": "1",
                    "max_gram": "15",
                    "token_chars": [ "letter", "digit" ]
                }
            }
        }
    },

    "mappings": {
        "place": …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

4
推荐指数
1
解决办法
991
查看次数

忽略自动装配目录中的类

我的服务/文件夹中的某个地方有一个异常,Symfony 正在尝试自动装配它:

无法自动装配服务“App\Service\Order\Exception\StripeRequiresActionException”:方法“__construct()”的参数“$secretKey”是类型提示的“string”,您应该明确配置其值。

这是我的课:

class StripeRequiresActionException extends \Exception
{
    /**
     * @var string
     */
    protected $secretKey;

    public function __construct(string $secretKey)
    {
        parent::__construct();

        $this->secretKey = $secretKey;
    }

    /**
     * @return string
     */
    public function getSecretKey(): string
    {
        return $this->secretKey;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不希望它被自动装配。有没有一种简单的方法来防止这个类被 DI 加载,例如带有注释?我知道我可以在我的 yaml 配置中排除这个类,但我不想这样做,因为我觉得这很丑陋且难以维护。

php autowired symfony

3
推荐指数
2
解决办法
2808
查看次数

标签 统计

php ×2

autowired ×1

elasticsearch ×1

memory ×1

symfony ×1