La unul din proiectele mele am avut nevoie sa extrag o serie de informatii din SAP si sa le introduc intr-o baza de date MySQL pe care apoi sa o extind cu informatii aditionale si sa creez/extrag diferite rapoarte. In configuratia clientului SAP folosea baze de date MSSQL, iar server-ul web pe care rula aplicatia rula CentOS administrat prin Plesk.
Pentru a se conecta la o baza de date MSSQL, PHP are nevoie de o extensie/un driver care sa-i permita acest lucru, la fel cum are nevoie de un driver pentru conectarea la o baza de date MySQL. Asa cum spune si documentatia PHP, driver-ul pentru MSSQL este disponibil numai pentru PHP care ruleaza pe Windows.
Solutia aleasa a fost crearea unei masini virtuale cu Windows pe care am copiat pachetul PHP 5.3. Pe aceasta masina virtuala am creat un script PHP care ruleaza la fiecare ora fixa (folosind Scheduled Tasks din Windows), care extrage informatii din baza de date MSSQL de pe server-ul SAP si le introduce in baza de date MySQL de pe server-ul web. Datorita volumului mare de date extrase (sute de mii de linii intr-o tabela) procesul de copiere a datelor dureaza aproximativ 5 minute.
Driverul de MSSQL pentru PHP poate fi descarcat de aici: http://www.microsoft.com/en-us/download/details.aspx?id=20098.
Driver-ul permite accesul la SQL Server 2005 si versiunile urmatoare, si se prezinta in doua variante: SQLSRV pentru programarea procedurala si PDO_SQLSRV pentru programarea orientata pe obiecte.
Incarcarea driver-ului in PHP poate fi facuta in doua moduri: fie la momentul cand PHP porneste, fie la momentul rularii unui script. Indiferent ce varianta se alege, mai intai trebuie copiat driverul necesar intr-un director in care PHP poate sa-l gaseasca, cel mai simplu in folderul cu extensii (vezi directiva extension_dir din php.ini).
Pentru incarcarea driverului SQLSRV la pornirea PHP, in fisierul php.ini trebuie adaugata linia:
extension=php_sqlsrv_53_ts.dll
sau, pentru incarcarea driver-ului PDO_SQLSRV:
extension=php_pdo_sqlsrv_53_ts.dll
Daca se doreste utilizarea driver-ului PDO, atunci este necesar si fisierul php_pdo.dll, care va fi copiat in acelasi folder cu extensiile, iar in php.ini trebuie adaugata linia:
extension=php_pdo.dll
Dupa ce s-au facut aceste setari trebuie restartat server-ul web (serviciul). Pentru a verifica daca driver-ul s-a incarcat cu succes se poate folosi un script PHP care apeleaza functia phpinfo().
Pentru varianta incarcarii driver-ului la momentul rularii unui script PHP (presupunand ca driver-ul a fost copiat in folderul cu extensii PHP), trebuie adaugata urmatoarea linie la inceputul scriptului:
dl('php_pdo_sqlsrv_53_ts.dll');
Pentru mai multe informatii despre functiile PHP care permit incarcarea dinamica a driverelor/extensiilor urmariti dl si extension_loaded.
In cazul meu am utilizat driver-ul SQLSRV adaugand urmatoarea linie in fisierul php.ini:
extension=php_sqlsrv_53_ts_vc9.dll
Informatii utile mai pot fi gasite aici:
http://msdn.microsoft.com/en-us/library/dn197842(v=sql.10).aspx
Leave a Reply