Как установить\настроить MongoCache

Тема в разделе "Thunder 3.X", создана пользователем ddn128, 2 апр 2017.

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  1. ddn128

    ddn128 Опытный Пользователь

    31 дек 2015
    475
    222
    Мужской
    Либо в конфиге пропиши ном. тип кеширования
    file_cache или sqlite_cache
    Либо на серваке установи\включи\настрой модуль mongo
     
  2. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.207
    548
    Чтобы использовать Mongo cache нужно установить сам Mongo на сервер и
    Подключить mongo.so в php.ini
     
  3. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    #3 amness, 4 апр 2017
    Последнее редактирование: 4 апр 2017
    Эт я в курсе, всё установлено и подключено:
    [​IMG]
     
  4. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.207
    548
  5. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    Не, не должно, вот что пишут: http://stackoverflow.com/questions/37261957/php-mongodb-fatal-error-class-mongoclient-not-found
    Заменил в 80 строке класс Mongo() на MongoDB\Driver\Manager() ошибка Class 'Mongo' not found пропала, но теперь в логах появилась другая:
    Код:
    PHP Catchable fatal error:  Object of class Slim\\Container could not be converted to string in /var/www/test.com/public_html/index.php on line 82
    
    Надо ещё что-то править.
     
  6. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    Ну так что там с Монгой? Будет фикс или нет? Расширения старше версии 1.0.0 не хотят работать с доргеном.
     
  7. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.207
    548
    В index.php, 82 строка, Доргена, замените:
    $collection = $mongo->$c->settings['cache']['mongo_cache']['dbname']->$mongo->$c->settings['cache']['mongo_cache']['collection'];
    на
    $collection = $c->settings['cache']['mongo_cache']['collection'];

    Прошу отписаться.
     
  8. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    Код:
    Type: TypeError
    Message: Argument 1 passed to Doctrine\Common\Cache\MongoDBCache::__construct() must be an instance of MongoCollection, string given, called in /var/www/test.com/public_html/index.php on line 84
    File: /var/www/test.com/public_html/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
    Line: 75
    
     
  9. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.207
    548
    Ошибку воспроизвел, дело в переменной с коллекции.
    Пробуем на прямую, временное решение:

    В index.php
    Код:
    case 'mongo_cache':
    $mongo = new Mongo("mongodb://{$c->settings['cache']['mongo_cache']['username']}:{$c->settings['cache']['mongo_cache']['password']}@{$c->settings['cache']['mongo_cache']['host']}:{$c->settings['cache']['mongo_cache']['port']}/{$c->settings['cache']['mongo_cache']['dbname']}");
    
                //$collection = $mongo->$c->settings['cache']['mongo_cache']['dbname']->$mongo->$c->settings['cache']['mongo_cache']['collection'];
    
    //тестовая БД
                $db = $mongo->test;
    
                // тестовая коллекция
                $collection = $db->items;
      
              
    $cache = new \Doctrine\Common\Cache\MongoDBCache($collection);
               break;
    
    У меня такие настройки в config.php:
    Код:
              'mongo_cache' => ['host' =>'127.0.0.1', 'port' =>'27017','username' => 'mongo_user', 'password' => 'mongo_password', 'dbname' => 'DATABASE-NAME', 'collection' =>'COLLECTION-NAME'],
    пользователь:mongo_user:mongo_password вручную добавле к БД test

    Вся бяда в
    Код:
    $
    collection = $mongo->$c->settings['cache']['mongo_cache']['dbname']->$mongo->$c->settings['cache']['mongo_cache']['collection'];
    Но я это поправлю.
     
  10. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    На какой версии PHP пробуете и какая система? У меня на PHP7 ни в какую не хочет работать. Класса Mongo() у меня нет, использую MongoDB\Client(), в остальном всё как описано выше но отдаёт ошибку:
    Код:
    Type: TypeError
    Message: Argument 1 passed to Doctrine\Common\Cache\MongoDBCache::__construct() must be an instance of MongoCollection, instance of MongoDB\Collection given, called in /var/www/test.com/public_html/index.php on line 91
    File: /var/www/test.com/public_html/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
    Line: 75
    
    line 91 - $cache = new \Doctrine\Common\Cache\MongoDBCache($collection);
     
  11. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.207
    548
    php_mongo.so точно подключен к PHP.ini?
     
  12. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    Точно подключен, даже если напрямую в index.php пишу:
    Код:
        /*
         *   MongoDB
         */
         case 'mongo_cache':
           $client = new MongoDB\Client("mongodb://localhost:27017");
           $collection = $client->TEST->coll;
           $result = $collection->insertOne( [ 'title' => 'Thunder3', 'content' => 'Thunder3' ] );
    
      
    $cache = new \Doctrine\Common\Cache\MongoDBCache($collection);
    
    коллекция и документ создаётся, но затем дорген вылетает с ошибкой - та что выше.
     
  13. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.207
    548
    А если напрямую ?
    $cache = new \Doctrine\Common\Cache\MongoDBCache($client->TEST->coll);
     
  14. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    Тоже самое.
     
  15. Firestarter

    Firestarter Администратор
    Команда форума

    26 окт 2015
    1.207
    548
    Хч, да что эе это какое, а можете мне скрин php_info показать?
     
  16. amness

    amness Активный Участник

    11 апр 2016
    241
    84
    Мужской
    https://www.sendspace.com/file/4ogzts
     
  17. daronlad

    daronlad Новичок

    14 апр 2016
    46
    0
    Мужской
    Как в итоге решили проблему? У меня то же самое, интересует решение проблемы

    Type: Error
    Message: Class 'Mongo' not found
    File: /home/.../index.php
    Line: 80