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

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

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

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

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

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

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

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

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

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

    26 окт 2015
    1.191
    551
  5. amness

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

    11 апр 2016
    251
    86
    Мужской
    Не, не должно, вот что пишут: 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
    251
    86
    Мужской
    Ну так что там с Монгой? Будет фикс или нет? Расширения старше версии 1.0.0 не хотят работать с доргеном.
     
  7. Firestarter

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

    26 окт 2015
    1.191
    551
    В 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
    251
    86
    Мужской
    Код:
    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.191
    551
    Ошибку воспроизвел, дело в переменной с коллекции.
    Пробуем на прямую, временное решение:

    В 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
    251
    86
    Мужской
    На какой версии 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.191
    551
    php_mongo.so точно подключен к PHP.ini?
     
  12. amness

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

    11 апр 2016
    251
    86
    Мужской
    Точно подключен, даже если напрямую в 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.191
    551
    А если напрямую ?
    $cache = new \Doctrine\Common\Cache\MongoDBCache($client->TEST->coll);
     
  14. amness

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

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

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

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

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

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

    daronlad Новичок

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

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

    ant333 Новичок

    7 мар 2018
    4
    1
    Мужской
    Проблему решил кто-то ? Тоже выбивает для монго
    Код:
    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
    php7,модуль Mongo 1.2.3
    http://joxi.ru/V2V501kixEZVMm

    mongo.so подключено к php.ini
     

Поделиться этой страницей