Cake PHP 3过早注销

Cake PHP 3过早注销,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我在CakePHP3应用程序上创建了一个聊天系统,但它干扰了应用程序的其他组件。所有经过身份验证的用户在网站上导航时都会过早注销 聊天室的前端使用angularjs和由cakePHP更新的BDD。 聊天室管理员每10秒会收到一次所有消息,并且会更新聊天室应用程序的“修改”字段。我手动更新修改后的字段: $chat_application->modified = \Cake\I18n\Time::now(); $this->ChatConversations->C

我在CakePHP3应用程序上创建了一个聊天系统,但它干扰了应用程序的其他组件。所有经过身份验证的用户在网站上导航时都会过早注销

聊天室的前端使用angularjs和由cakePHP更新的BDD。 聊天室管理员每10秒会收到一次所有消息,并且会更新聊天室应用程序的“修改”字段。我手动更新修改后的字段:

    $chat_application->modified = \Cake\I18n\Time::now();
    $this->ChatConversations->ChatApplications->save($chat_application);
我使用此字段了解管理员是否在线

所有其他用户每10秒都会收到一次消息列表,但它不会改变数据库(Mysql)中的某些内容

管理员提出的请求:

     $http.post('/getConversations.json',{name:'villa-bali-booking.com',password:'*******',user:'Administrator'}).success(function(data){ ... });
用户提出的请求:

    $.post("/getMessages.json",{uuid : uuid, name : 'Visitor'}, function (data){ .... });
什么会导致这些注销?断开连接的用户未使用聊天室

谢谢:)

编辑:如果问题在内部,则编辑cakephp的app.php 编辑:
问题似乎已经解决了,我给我的主机OVH发了一张罚单,他们说这不是他们的错,但问题不再出现了。所以我猜他们做了修改


谢谢你的帮助:)

问题似乎已经解决了,我给我的托管OVH发了一张罚单,他们说这不是他们的错,但问题不再出现了。所以我猜他们做了修改。

会话失效的一个原因是404点击了应用程序-这是第一件要检查的事情<代码>断开连接的用户不使用聊天室。-那么聊天室不太可能成为一个因素一个用户的行为不会影响其他用户会话的有效性,除非设置/正在进行一些非常奇怪的事情。没有任何404:-(,当没有人使用聊天时,没有问题……如果里面有错误,我在第一篇帖子中添加了app.php文件。谢谢你的帮助;)可能由于错误而删除了所有会话?可能是缓存问题?您可能正在使用javascript请求登录用户,这将导致重新生成会话id。如果您这样做的速度足够快,会话id将与浏览器cookie不同步。这将导致立即注销javascript请求doesn不使用会话,每次都检查用户和密码。我查看了Chrome的网络实用程序,请求中的cookie没有变化。真奇怪:/谢谢你的帮助
<?php
return [
/**
 * Debug Level:
 *
 * Production Mode:
 * false: No error messages, errors, or warnings shown.
 *
 * Development Mode:
 * true: Errors and warnings shown.
 */
'debug' => false,

/**
 * Configure basic information about the application.
 *
 * - namespace - The namespace to find app classes under.
 * - encoding - The encoding used for HTML + database connections.
 * - base - The base directory the app resides in. If false this
 *   will be auto detected.
 * - dir - Name of app directory.
 * - webroot - The webroot directory.
 * - wwwRoot - The file path to webroot.
 * - baseUrl - To configure CakePHP to *not* use mod_rewrite and to
 *   use CakePHP pretty URLs, remove these .htaccess
 *   files:
 *      /.htaccess
 *      /webroot/.htaccess
 *   And uncomment the baseUrl key below.
 * - fullBaseUrl - A base URL to use for absolute links.
 * - imageBaseUrl - Web path to the public images directory under webroot.
 * - cssBaseUrl - Web path to the public css directory under webroot.
 * - jsBaseUrl - Web path to the public js directory under webroot.
 * - paths - Configure paths for non class based resources. Supports the
 *   `plugins`, `templates`, `locales` subkeys, which allow the definition of
 *   paths for plugins, view templates and locale files respectively.
 */
'App' => [
    'namespace' => 'App',
    'encoding' => 'UTF-8',
    'base' => false,
    'dir' => 'src',
    'webroot' => 'webroot',
    'wwwRoot' => WWW_ROOT,
    // 'baseUrl' => env('SCRIPT_NAME'),
    'fullBaseUrl' => false,
    'imageBaseUrl' => 'img/',
    'cssBaseUrl' => 'css/',
    'jsBaseUrl' => 'js/',
    'paths' => [
        'plugins' => [ROOT . DS . 'plugins' . DS],
        'templates' => [APP . 'Template' . DS],
        'locales' => [APP . 'Locale' . DS],
    ],
],

/**
 * Security and encryption configuration
 *
 * - salt - A random string used in security hashing methods.
 *   The salt value is also used as the encryption key.
 *   You should treat it as extremely sensitive data.
 */
'Security' => [
    'salt' => '**********',
    'level' => 'medium'
],

/**
 * Apply timestamps with the last modified time to static assets (js, css, images).
 * Will append a querystring parameter containing the time the file was modified.
 * This is useful for busting browser caches.
 *
 * Set to true to apply timestamps when debug is true. Set to 'force' to always
 * enable timestamping regardless of debug value.
 */
'Asset' => [
    // 'timestamp' => true,
],

/**
 * Configure the cache adapters.
 */
'Cache' => [
    'default' => [
        'className' => 'File',
        'path' => CACHE,
    ],

    /**
     * Configure the cache used for general framework caching. Path information,
     * object listings, and translation cache files are stored with this
     * configuration.
     */
    '_cake_core_' => [
        'className' => 'File',
        'prefix' => 'myapp_cake_core_',
        'path' => CACHE . 'persistent/',
        'serialize' => true,
        'duration' => '+2 minutes',
    ],

    /**
     * Configure the cache for model and datasource caches. This cache
     * configuration is used to store schema descriptions, and table listings
     * in connections.
     */
    '_cake_model_' => [
        'className' => 'File',
        'prefix' => 'myapp_cake_model_',
        'path' => CACHE . 'models/',
        'serialize' => true,
        'duration' => '+2 minutes',
    ],
],

/**
 * Configure the Error and Exception handlers used by your application.
 *
 * By default errors are displayed using Debugger, when debug is true and logged
 * by Cake\Log\Log when debug is false.
 *
 * In CLI environments exceptions will be printed to stderr with a backtrace.
 * In web environments an HTML page will be displayed for the exception.
 * With debug true, framework errors like Missing Controller will be displayed.
 * When debug is false, framework errors will be coerced into generic HTTP errors.
 *
 * Options:
 *
 * - `errorLevel` - int - The level of errors you are interested in capturing.
 * - `trace` - boolean - Whether or not backtraces should be included in
 *   logged errors/exceptions.
 * - `log` - boolean - Whether or not you want exceptions logged.
 * - `exceptionRenderer` - string - The class responsible for rendering
 *   uncaught exceptions.  If you choose a custom class you should place
 *   the file for that class in src/Error. This class needs to implement a
 *   render method.
 * - `skipLog` - array - List of exceptions to skip for logging. Exceptions that
 *   extend one of the listed exceptions will also be skipped for logging.
 *   E.g.:
 *   `'skipLog' => ['Cake\Network\Exception\NotFoundException', 'Cake\Network\Exception\UnauthorizedException']`
 */
'Error' => [
    'errorLevel' => E_ALL & ~E_DEPRECATED,
    'exceptionRenderer' => 'Cake\Error\ExceptionRenderer',
    'skipLog' => [],
    'log' => true,
    'trace' => true,
],

/**
 * Email configuration.
 *
 * You can configure email transports and email delivery profiles here.
 *
 * By defining transports separately from delivery profiles you can easily
 * re-use transport configuration across multiple profiles.
 *
 * You can specify multiple configurations for production, development and
 * testing.
 *
 * ### Configuring transports
 *
 * Each transport needs a `className`. Valid options are as follows:
 *
 *  Mail   - Send using PHP mail function
 *  Smtp   - Send using SMTP
 *  Debug  - Do not send the email, just return the result
 *
 * You can add custom transports (or override existing transports) by adding the
 * appropriate file to src/Network/Email.  Transports should be named
 * 'YourTransport.php', where 'Your' is the name of the transport.
 *
 * ### Configuring delivery profiles
 *
 * Delivery profiles allow you to predefine various properties about email
 * messages from your application and give the settings a name. This saves
 * duplication across your application and makes maintenance and development
 * easier. Each profile accepts a number of keys. See `Cake\Network\Email\Email`
 * for more information.
 */
'EmailTransport' => [
    'default' => [
        'className' => 'Mail',
    ],
    'smtp' => [
                    'className' => 'Smtp',
        // The following keys are used in SMTP transports
        'host' => 'smtp.gmail.com',
        'port' => 587,
        'timeout' => 30,
        'username' => '**********',
        'password' => '********',
        'client' => null,
        'tls' => true,
    ]
],

'Email' => [
    'default' => [
        'transport' => 'default',
        'from' => '******',
        //'charset' => 'utf-8',
        //'headerCharset' => 'utf-8',
    ],
],

/**
 * Connection information used by the ORM to connect
 * to your application's datastores.
 * Drivers include Mysql Postgres Sqlite Sqlserver
 * See vendor\cakephp\cakephp\src\Database\Driver for complete list
 */
'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,

        /**
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'nonstandard_port_number',         
        'host' => 'localhost',
        'username' => '*****',
        'password' => '*****',
        'database' => '*******',



        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,

        /**
         * Set identifier quoting to true if you are using reserved words or
         * special characters in your table or column names. Enabling this
         * setting will result in queries built using the Query Builder having
         * identifiers quoted when creating SQL. It should be noted that this
         * decreases performance because each query needs to be traversed and
         * manipulated before being executed.
         */
        'quoteIdentifiers' => false,

        /**
         * During development, if using MySQL < 5.6, uncommenting the
         * following line could boost the speed at which schema metadata is
         * fetched from the database. It can also be set directly with the
         * mysql configuration directive 'innodb_stats_on_metadata = 0'
         * which is the recommended value in production environments
         */
        //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
    ],

    /**
     * The test connection is used during the test suite.
     */
    'test' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        //'port' => 'nonstandard_port_number',
        'username' => 'my_app',
        'password' => 'secret',
        'database' => 'test_myapp',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
        'quoteIdentifiers' => false,
        //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
    ],
],

/**
 * Configures logging options
 */
'Log' => [
    'debug' => [
        'className' => 'Cake\Log\Engine\FileLog',
        'path' => LOGS,
        'file' => 'debug',
        'levels' => ['notice', 'info', 'debug'],
    ],
    'error' => [
        'className' => 'Cake\Log\Engine\FileLog',
        'path' => LOGS,
        'file' => 'error',
        'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
    ],
],

/**
 *
 * Session configuration.
 *
 * Contains an array of settings to use for session configuration. The
 * `defaults` key is used to define a default preset to use for sessions, any
 * settings declared here will override the settings of the default config.
 *
 * ## Options
 *
 * - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'.
 * - `cookiePath` - The url path for which session cookie is set. Maps to the
 *   `session.cookie_path` php.ini config. Defaults to base path of app.
 * - `timeout` - The time in minutes the session should be valid for.
 *    Pass 0 to disable checking timeout.
 * - `defaults` - The default configuration set to use as a basis for your session.
 *    There are four built-in options: php, cake, cache, database.
 * - `handler` - Can be used to enable a custom session handler. Expects an
 *    array with at least the `engine` key, being the name of the Session engine
 *    class to use for managing the session. CakePHP bundles the `CacheSession`
 *    and `DatabaseSession` engines.
 * - `ini` - An associative array of additional ini values to set.
 *
 * The built-in `defaults` options are:
 *
 * - 'php' - Uses settings defined in your php.ini.
 * - 'cake' - Saves session files in CakePHP's /tmp directory.
 * - 'database' - Uses CakePHP's database sessions.
 * - 'cache' - Use the Cache class to save sessions.
 *
 * To define a custom session handler, save it at src/Network/Session/<name>.php.
 * Make sure the class implements PHP's `SessionHandlerInterface` and set
 * Session.handler to <name>
 *
 * To use database sessions, load the SQL file located at config/Schema/sessions.sql
 */
'Session' => [
    'defaults' => 'php',
    'timeout'  => 60
],
];
    [Sat Jul 04 04:25:27 2015] [error] [client **.**.**.**] [host www.********.com] (104)Connection reset by peer: FastCGI: comm with server "/homez.***/***/www/webroot/index.php" aborted: read failed, referer: http://www.********.com/periods/112
    [Sat Jul 04 04:25:27 2015] [error] [client **.**.**.**] [host www.********.com] FastCGI: incomplete headers (0 bytes) received from server "/homez.***/***/www/webroot/index.php", referer: http://www.********.com/periods/112
    [Sat Jul 04 04:25:27 2015] [error] [client **.**.**.**] [host www.********.com] FastCGI: An error happend on Fastcgi processing, fallback to CGI, referer: http://www.********.com/periods/112