symfony 2.8生产环境 中的memcached错误

问题描述 投票:0回答:1

奇怪的是,该错误仅在生产环境中发生。 apache error_log中的错误:

[Sat Dec 10 18:35:44.122028 2016] [proxy_fcgi:error] [pid 7916] [client 81.202.203.209:47076] AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught exception 'Symfony\\Component\\DependencyInjection\\Exception\\ServiceNotFoundException' with message 'The service "doctrine.orm.default_entity_manager" has a dependency on a non-existent service "doctrine.cache.memcached".' in /var/www/vhosts/xxxx.com/xxxx/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php:58\nStack trace:\n#0 /var/www/vhosts/xxxx.com/xxxx/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php(51): Symfony\\Component\\DependencyInjection\\Compiler\\CheckExceptionOnInvalidReferenceBehaviorPass->processReferences(Array)\n#1 /var/www/vhosts/xxxx.com/xxxx/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php(51): Symfony\\Component\\DependencyInjection\\Compiler\\CheckExceptionOnInvalidReferenceBehaviorPass->processReferences(...\n', referer: xxxx

memcached的配置数据

services.yml:

    parameters:
#    parameter_name: value

services:
#    service_name:
#        class: AppBundle\Directory\ClassName
#        arguments: ["@another_service_name", "plain_value", "%parameter_name%"]

    kernel.listener.command_dispatch:
        class: LoteriaBundle\EventListener\ConsoleExceptionListener
        arguments: ['@logger']
        tags:
            - { name: kernel.event_listener, event: console.exception }

    memcached:
        class: Memcached
        calls:
            - [ addServers, [%memcache_hosts%] ]

    doctrine.cache.memcached:
        class: Doctrine\Common\Cache\MemcachedCache
        calls:
            - [ setMemcached, [ @memcached ] ]

config_prod.yml:

    imports:
    - { resource: config.yml }

doctrine:
    orm:
        entity_managers:
            default:
                metadata_cache_driver:
                    type: service
                    id: doctrine.cache.memcached
                query_cache_driver:
                    type: service
                    id: doctrine.cache.memcached
                result_cache_driver:
                    type: service
                    id: doctrine.cache.memcached      

monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: error
            handler:      nested
        nested:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
        console:
            type:  console

parameters.yml

    memcache_hosts:
    -
        dsn: 127.0.0.1
        port: 11211

Códigode mi config.yml

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
parameters:
  locale: en
framework:
  #esi:             ~
  #translator:      { fallbacks: ["%locale%"] }
  secret:          "%secret%"
  router:
    resource: "%kernel.root_dir%/config/routing.yml"
    strict_requirements: ~
  form:            ~
  csrf_protection: ~
  validation:      { enable_annotations: true }
  #serializer:      { enable_annotations: true }
  templating:
    engines: ['twig']
  default_locale:  "%locale%"
  trusted_hosts:   ~
  trusted_proxies: ~
  session:
    # handler_id set to null will use default session handler from php.ini
    handler_id:  ~
  fragments:       ~
  http_method_override: true


twig:
  debug:            "%kernel.debug%"
  strict_variables: "%kernel.debug%"
  globals:
    global:
        url_logo: '/'
        url_buscador: ''
assetic:
  debug:          '%kernel.debug%'
  use_controller: '%kernel.debug%'
  filters:
    cssrewrite: ~

doctrine:
  dbal:
    driver:   pdo_mysql
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8
    # if using pdo_sqlite as your database driver:
    #   1. add the path in parameters.yml
    #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
    #   2. Uncomment database_path in parameters.yml.dist
    #   3. Uncomment next line:
    #     path:     "%database_path%"

  orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true

swiftmailer:
  transport: "%mailer_transport%"
  host:      "%mailer_host%"
  username:  "%mailer_user%"
  password:  "%mailer_password%"
  port: "%mailer_port%"
  encryption: "%mailer_enc%"
  auth_mode: "%mailer_auth_mode%"
  #    spool:     { type: memory  }

我按照以后的注释中的要求添加config.yml

php symfony memcached production-environment
1个回答
0
投票

这是在生产环境中对我有用的配置:

parameters.yml

parameters:
  ....
  memcache_hosts:
    -
        dsn: 127.0.0.1
        port: 11211

配置文件

....

doctrine:
dbal:
    driver:   pdo_mysql
    host:     "%database_host%"
    port:     "%database_port%"
    dbname:   "%database_name%"
    user:     "%database_user%"
    password: "%database_password%"
    charset:  UTF8

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    entity_managers:
        default:
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true
            metadata_cache_driver:
                type: service
                id: doctrine.cache.memcached
            query_cache_driver:
                type: service
                id: doctrine.cache.memcached
            result_cache_driver:
                type: service
                id: doctrine.cache.memcached

services.yml

  ....

  services:
    kernel.listener.command_dispatch:
      class: LoteriaBundle\EventListener\ConsoleExceptionListener
      arguments: ['@logger']
      tags:
        - { name: kernel.event_listener, event: console.exception }

    memcached:
      class: Memcached
      calls:
        - [ addServers, [%memcache_hosts%] ]

    doctrine.cache.memcached:
      class: Doctrine\Common\Cache\MemcachedCache
      calls:
        - [ setMemcached, [ @memcached ] ]
© www.soinside.com 2019 - 2024. All rights reserved.