From: | "Servers24 Network" <servers24(at)gmail(dot)com> |
---|---|
To: | pgsql-php(at)postgresql(dot)org |
Subject: | Re: PgSQL and integration between 2 PHP programs and a Java program |
Date: | 2006-11-10 01:00:15 |
Message-ID: | 7b872b430611091700r6412b1d0ld71c83e70494b3d1@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-php |
Hi
First tI should thank Brew and Juan for their kind help.
Second it seems that the php applications doesn't use ADODB as here's a
sample DB connection function of one of the PHP sctipts :
[code]
class DB {
function DB(){
$this->values = array();
}//DB
function connect() {
$this->conn_id = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS,1);
mysql_select_db(SQL_DB,$this->conn_id);
$version = $this->version();
if($version >= 4.1){
$encoding = extract_encoding("mysql");
if($encoding){
$sql_query = "SET NAMES '".$encoding."'";
$this->execute($sql_query);
}//if
}//if
}//connect
function disconnect(){
if($this->conn_id)
@mysql_close($this->conn_id);
}//disconnect
function version(){
$sql_query = "SELECT VERSION()";
$version = $this->single($sql_query);
$version = ereg_replace("[^0-9|\.]","",$version);
return $version;
}//version
function execute($sql_query) {
if(!$this->conn_id){
$this->connect();
}//if
preg_match_all("/\:[A-Za-z|0-9|_]{1,}\:/",$sql_query,$matches);
$patterns = $matches[0];
while(list(,$val) = each($patterns)){
$key = substr($val,1,strlen($val)-2);
$value = stripslashes($this->values[$key]);
$sql_query =
hs_ereg_replace($val,mysql_escape_string($value),$sql_query);
}//while
reset($this->values);
$this->sql_result = mysql_query($sql_query,$this->conn_id);
if(!$this->sql_result && !hs_ereg("^LOCK TABLES",$sql_query) &&
$sql_query!="UNLOCK TABLES"){
die($sql_query.":".mysql_error($this->conn_id));
}//if
return $this->sql_result;
}//execute
function insert($sql_query){
if((!$this->sql_result)||($sql_query != $this->sql_query)){
$this->execute($sql_query);
}//if
$this->clean();
return mysql_insert_id($this->conn_id);
}//insert
function update($sql_query){
if((!$this->sql_result)||($sql_query != $this->sql_query)){
$this->execute($sql_query);
}//if
$this->clean();
return mysql_affected_rows($this->conn_id);
}//update
function fetch($sql_query){
if((!$this->sql_result)||($sql_query != $this->sql_query)){
$this->execute($sql_query);
}//if
$this->sql_query = $sql_query;
$result = @mysql_fetch_object($this->sql_result);
if(!$result)
$this->clean();
return $result;
}//fetch
function row($sql_query){
if((!$this->sql_result)||($sql_query != $this->sql_query)){
$this->execute($sql_query);
}//if
$this->sql_query = $sql_query;
$result = @mysql_fetch_assoc($this->sql_result);
if(!$result)
$this->clean();
return $result;
}//row
function result($sql_query){
$ret_array = array();
while($this->res = $this->row($sql_query)){
$ret_array[] = $this->res;
}//while
@mysql_free_result($this->res);
$this->clean();
return $ret_array;
}//result
function single($sql_query){
$this->execute($sql_query);
$this->clean();
return @mysql_result($this->sql_result,0);
}//single
function lock($table){
$sql_query="LOCK TABLES `".$table."` WRITE";
$this->execute($sql_query);
}//lock
function unlock(){
$sql_query="UNLOCK TABLES";
$this->execute($sql_query);
}//unlock
function clean(){
$this->sql_query = "";
}//clean
}//DB class
$DB = new DB;
[/code]
Well, this way I think I would need very much modification in source codes
to make the PHP scripts talk to a PgSQL server :(
After all I have thought of 3 methods of integration. I would like everyone
who have an experience to share it with me and vote for the best methd that
comes to your mind :
1. change the PHP programs somehow that the registration and password
modification ( and maybe profile editing ) won't be accessed. This way I
will write a centralized registeration and editing script where users can
register and update their profile. When a user is registered or updated all
the new information including username, password, name, last_name, address
an etc will be updated in all connected databased + LDAP server. This way
for example user "sample" with pass "sample" will be stored in almost 10
databases + LDAP server. Then each application will read from its own
database ( MySQL, PgSQL or LDAP ) and authenticates the user. Also CAS can
be integrated using LDAP as the main directory service and phpCAS or JavaCas
as the client ticketing system.
Pros : no change in any PHP or Java applications, but just integration of
CAS for authentication. Centeral user managemet like what Yahoo offers (
Account Setting in Yahoo ). Seprate databased for each application that
maybe increases security.
Cons : Huge amount of data duplication as each username. password, address
and other related fields will be the same in many databases! , High database
loads due to multiple UPDATE of several tables in different DBs.
2. Change all the applications to use PgSQL and share the same database.
Pros : No data duplication, fast database access ( no high loads like method
no.1 )
Cons : Heavy source code editing
3. Change all the applications to use LDAP.
Pros : No data duplication, fast database access ( no high loads like method
no.1 )
Cons : Heavy source code editing, I'm not sure if LDAP can handle this much
insert & update queries as it's mostly a directory service and is not
usefull to be used as a dabatase for other informations like profiles and
etc.
--
Warm Regards,
Amir
From | Date | Subject | |
---|---|---|---|
Next Message | Brew | 2006-11-10 02:45:36 | Re: PgSQL and integration between 2 PHP programs and a Java program |
Previous Message | ljb | 2006-11-10 00:55:39 | Re: make pg_connect() connect to another unix domain socket |