Per offrirti un'esperienza di navigazione sempre migliore, questo sito utilizza cookie propri e di terze parti, partner selezionati. I cookie di terze parti potranno anche essere di profilazione.
Le tue preferenze si applicheranno solo a questo sito web. Puoi modificare le tue preferenze in qualsiasi momento ritornando su questo sito o consultando la nostra informativa sulla riservatezza.
E' possibile rivedere la nostra privacy policy cliccando qui e la nostra cookie policy cliccando qui.
Per modificare le impostazioni dei cookies clicca qui
  • seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

MongoDB: come installare i driver PHP in Centos 8, ed esempi di utilizzo.

di :: 23 ottobre 2020
MongoDB: come installare i driver PHP in Centos 8, ed esempi di utilizzo.

Dopo esserci occupati dell'installazione di MongoDB in Centos 8, e delle operazioni CRUD utilizzando la shell amministrativa, oggi vediamo come utilizzare questo famoso database NoSQL nelle nostre pagine PHP.

Noi avevamo installato MongoDB in versione 4.4.1, in una distribuzione Centos 8 con PHP 7.2.

Abbiamo bisogno di installare i driver PHP specifici per questa versione di Mongo, e successivamente una libreria.

Installazione del driver PHP via PECL

Per istallare il driver dobbiamo utilizzare pecl, un repository per le estensioni PHP. Lanciamo il comando

# pecl install mongodb

L'estensione mongodb verrà installata installata qui:

/usr/lib64/php/modules/mongodb.so

Al termine dell'installazione occorre modificare il file di configurazione di php "php.ini", ad esempio utilizzando l'editor "vi"

# vi /etc/php.ini

Aperto il file aggiungiamo questa riga

extension=mongodb.so

Salviamo il file, e riavviamo il server web, ad esempio Apache

systemctl restart httpd.service

Installazione del driver PHP manualmente

In alternativa all'installazione via PECL possiamo procedere all'installazione del driver manualemente, attraverso la compilazione dal codice sorgente.

Occorre scaricare il sorgente, e lo facciamo via GIT, il noto software di controllo di versione distribuito utilizzabile da interfaccia a riga di comando.

Quindi innanzitutto dovete avere GIT installato e lo facciamo tramite yum (o dnf).

# yum install git

Con GIT intallato possiamo scaricare il sorgente

# git clone https://github.com/mongodb/mongo-php-driver.git

Finito il download, posizioniamoci nella cartella "mongo-php-driver"

# cd mongo-php-driver

e procediamo con la compilazione del sorgente seguendo questa procedura

# git submodule update --init
# phpize
# ./configure
# make all
# make install

Ultimata l'installazione, modifichiamo il file "php.ini" presente nella directory "etc", aggiungendo la riga

extension=mongodb.so

Per essere certi che mongodb sia installato, digitiamo la linea di comando php -m che visualizzerà la lista dei moduli installati, che filtriamo con grep

php -m | grep mongodb

L'output sarà "mongodb".

Installazione della libreria MongoDB

Ultimata l'installazione del driver, occorre installare anche una apposita libreria mongodb tramite lo strumento composer.

Composer è un gestore di pacchetti PHP. Se non è installato sul vostro server, dovete procedere alla sua installazione.

Se non avete Composer, o non sapete cosa sia, vi rimando a questo articolo dedicato alla sua installazione ed utilizzo.

Vogliamo utilizzare MongoDB in un nostro progetto PHP, presente ad esempio nella directory "/var/www/html/test".

Create quindi la directory "test" e posizionatevi al suo interno

# mkdir /var/www/html/test
# cd /var/www/html/test

Adesso che siamo dentro al progetto, diciamo a composer di installare mongodb

# composer require mongodb/mongodb

L'ouput sarà simile a questo

Using version ^1.7 for mongodb/mongodb
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing composer/package-versions-deprecated (1.11.99): Loading from cache
  - Installing jean85/pretty-package-versions (1.5.1): Loading from cache
  - Installing mongodb/mongodb (1.7.1): Loading from cache
Writing lock file
Generating autoload files
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
1 package you are using is looking for funding.

Composer avrà creato i file composer.json e composer.lock, e la directory "vendor" che contiene la librere e dipendenze.

Ultimata l'installazione possiamo finalmente testare la connessione a Mongo via PHP

Primo esempio di utilizzo di MongoDB in PHP

Come primo esempio visualizziamo la lista di tutti i database installati, che di default, sappiamo essere i seguenti: admin,congif,local

Crea un file index.php, che inserirai nella directory test,

<?php

require __DIR__ . '/vendor/autoload.php';
try {
	$client = new MongoDB\Client('mongodb://localhost:27017');
	foreach ($client->listDatabases() as $databaseInfo) {
		var_dump($databaseInfo);
	}
} 
catch (Exception $e) {
	echo $e->getMessage();
}

?>

Speighiamo nel dettaglio questo script

  • Includiamo l'autoloader di Composer in modo da caricare le librerie
  • Poi instanziamo un oggetto di classe Mongo, passandogli una stringa contenente i parametri di connessione: ci connettiamo al database MongoDB locale e sulla porta di defautl 27017. Non abbiamo previsto una autenticazione per l'accesso.
  • Utilizzando la funzione listDatabases elenchiamo tutti i db presenti
  • Abbiamo utilizzato la sintassi "try catch" per gestire eccezioni, come la mancata connessione al database

Se la connessione al database fosse stata autenticata, avremmo dovuto indicare anche username e password

$client = new MongoDB\Client('mongodb://username:password@localhost:27017');

Lanciamo lo script da linea di comando

# php index.php

Il risultato sarà

object(MongoDB\Model\DatabaseInfo)#7 (3) {
  ["name"]=>
  string(5) "admin"
  ["sizeOnDisk"]=>
  float(40960)
  ["empty"]=>
  bool(false)
}
object(MongoDB\Model\DatabaseInfo)#8 (3) {
  ["name"]=>
  string(6) "config"
  ["sizeOnDisk"]=>
  float(49152)
  ["empty"]=>
  bool(false)
}
object(MongoDB\Model\DatabaseInfo)#7 (3) {
  ["name"]=>
  string(5) "local"
  ["sizeOnDisk"]=>
  float(40960)
  ["empty"]=>
  bool(false)
}

Dopo questo primo assaggio di Mongo, vediamo come creare in un database di nome "demo", che non esiste ancora, una collection (tabella) di nome "giocatori", che non esiste ancora, e tre documenti (record) contenenti coppie nome / valore rappresentate da nomi di giocatori con la relativa squadra di appartenenza .

Questo è lo script:

<?php
require __DIR__ . '/vendor/autoload.php';

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->giocatori;

$result = $collection->insertOne( [ 'nome' => 'Ronaldo', 'squadra' => 'Juventus' ] );
echo "Inserted with Object ID '{$result->getInsertedId()}'\n";

$result = $collection->insertOne( [ 'nome' => 'Insigne', 'squadra' => 'Napoli' ] );
echo "Inserted with Object ID '{$result->getInsertedId()}'\n";

$result = $collection->insertOne( [ 'nome' => 'Chiellini', 'squadra' => 'Juventus' ] );
echo "Inserted with Object ID '{$result->getInsertedId()}'\n";
?>

Speighiamo nel dettaglio questo script

  • Come prima cosa includiamo l'autoloader delle classi di Composer
  • Poi instanziamo un oggetto di classe Mongo, passandogli una stringa contenente i parametri di connessione: ci connettiamo al database.
  • Abbiamo quindi accesso all'oggetto $collection: ricordiamo che in Mongo le collection sono equivalenti alle tabelle dei database relazionali e se la collezione (o il database), non esiste, Mongo la creerà automaticamente al momento dell'inserimento del primo documento.
  • Procediamo quindi all'inserimento del primo documento, con il metodo insertOne, ed otteniamo il suo ID: ricordiamo che obbligatoriamente ogni record in Mongo deve contenere la chiave "_id".
  • Inseriamo altri due documenti

Volendo, avremmo potuto creare un variabile array, contenente le chiavi/valore del record, da utilizzare poi nel metodo insertOne

$giocatore = array (
     "nome" => "Ronaldo",
     "squadra" => "Juventus"
);

$result = $collection->insertOne( $giocatore );

Lanciamo lo script da linea di comando, ecco il risultato

# php index.php
Inserito con Object ID '5f885d276d084538c05d37c2'
Inserito con Object ID '5f885d276d084538c05d37c3'
Inserito con Object ID '5f885d276d084538c05d37c4'

Adesso che la nostra collection contiene dei record, operiamo una ricerca utilizzando la funzione find, che nei database relazionali è equivalente ad una select.

Cerchiamo tutti i giocatori appartenenti alla squadra Juventus: verranno estratti l'id e il nome dei giocatori dei due record presenti nel database.

<?php
require __DIR__ . '/vendor/autoload.php';

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->giocatori;

$result = $collection->find( [ 'squadra' => 'Juventus' ] );

foreach ($result as $entry) {
    echo $entry['_id'], ': ', $entry['nome'], "\n";
}
?>

Lanciamo lo script ed ecco il risultato

# php index.php
5f885d276d084538c05d37c2: Ronaldo
5f885d276d084538c05d37c4: Chiellini

Con questo esempio abbiamo concluso la spiegazione relativa all'installazione dei driver e librerie PHP per l'utilizzo di MongoDB. Con le conoscenze che già avrete, relative alle operazione di CRUD da shell amministrativa di Mongo, potete iniziare a sviluppare i vostri primi progetti con questo database.

Approfondimenti

Potrebbe interessarti

 
 
 
 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

x

ATTENZIONE