Re: PHP4 for Windows2000 and MS SQL Server 7 (some tests and possible bugs)

From: Date: Sat, 24 Jun 2000 22:59:29 +0000
Subject: Re: PHP4 for Windows2000 and MS SQL Server 7 (some tests and possible bugs)
References: 1  Groups: php.db php.dev php.windows 
Request: Send a blank email to php-dev+get-22243@lists.php.net to get a copy of this message
The whole point of splitting the mailing lists into specific topics is lost if you crosspost to a bunch of them and it only serves to annoy people like myself who are on all the lists. On Sat, 24 Jun 2000, Andre Couto wrote: > > Hi! > > I've make some tests and I think that there are some bugs mainly at > the ISAPI version of php for Windows. > > I'm using Windows 2000 Server with Microsoft SQL Server 7 and with > Oracle 8. Also IIS 5 and PHP4. > > So, I was looking for support on Windows and I discover that the > PHP Group don't support Win32 binaries (only a few of them) and that I > have two options: > > 1- Compile the extensions with VC5 or VC6 > 2- Take the binaries from swwwing.com > > Well. I don't have VC5 or VC6. So I am trying to use swwwing.com > binaries. (Thanks to Frank for the support) > > How is my installation: > At the moment: I have downloaded the core files (php.exe, php4isapi.dll, > php4nts.dll, php4ts.dll, phpts.exe) and all the modules of version 4 > from swwwing.com > > I have renamed php.ini-dist to php.ini. I didn't make any changes at this > file. And I have copied all the core files and the modules to > c:\winnt\system32. > > First Test > ---------- > > I've tried to use the ISAPI DLL. It works fine if I didn't include any > extension DLL to it. (Well, I only test the extensions php_mssql70.dll and > php_oci8.dll). So I have configured the IIS to execute php4isapi.dll and > I have changed the php.ini to load the extension=php_mssql70.dll > > I have also written a little test code: > > ---------------------------------------------------------------- > <?php > > //dl ("php_mssql70.dll"); > > $dbconn=mssql_connect("STRANGER","db_user","teste"); > if (!$dbconn) die("error1"); > var_dump($dbconn); > echo "<BR>"; > > $ret=mssql_select_db("generauction",$dbconn); > if (!$ret) die ("error2"); > var_dump($ret); > echo "<BR>"; > //exit > > $cursor=mssql_query("SELECT * FROM status",$dbconn); > var_dump($cursor); > echo "<BR>"; > if (!$cursor) die ("error3"); > //exit > > $array=mssql_fetch_row($cursor); > var_dump($array); > echo "<BR>"; > echo $array[0]."-".$array[1]; > mssql_close($dbconn); > ?> > ----------------------------------------------------------------- > > Note that at this test I'm loading mssql extension at the php.ini and > that the dl line is commented. > > Another important informations is the status table: > > STATUS > > Field Data Type > -------- ---------- > stacod tinyint > stades varchar(20) > > What is the result of the code???? (at the browser) > > First Time: > resource(1) of type 2 > bool(true) > resource(2) of type 1 > array(2) { [0]=> string(1) "1" [1]=> string(5) "teste" } > 1-teste > > After Reload: > resource(1) of type 2 > bool(true) > PHP has encountered an Access Violation at 00000000 > > After Another Reload: > resource(1) of type 2 > bool(true) > resource(2) of type 1 > array(2) { [0]=> string(1) "1" [1]=> string(5) "teste" } > 1-teste > > After another: > resource(1) of type 2 > bool(true) > PHP has encountered an Access Violation at 00000000 > > ... I did that really a lot!! And it always like that. One time it works > and the next time doesn't work. So, the error is NOT randomic. > > And if you pay attention you can see another error. The Field stacod in table > STATUS is tinyint. It's not a string. And for the PHP it is a STRING. > > > SECOND TEST: > ------------ > The only change from the first test is that I have uncommented the first line > with "exit". So now the code only executes the mssql_connect() and the > mssql_select_db() functions. The query function is OUT. > > What is the result??? > > resource(1) of type 2 > bool(true) > > It's always that. So, no errors here. > > > THIRD TEST: > ----------- > I have used the same code. And I have commented the "exit" line again. The only > change now was in the SELECT clause at the query function. Instead of use the > status table I've used the client table. The difference is that the client table > was completely EMPTY. > > What is the result??? > > resource(1) of type 2 > bool(true) > resource(2) of type 1 > bool(false) > - > > And It's always like that. No errors here again! > > I did that test with other tables. And the results was always like that. If a table > has data. The Access Violation occurs, if it is empty, no errors! > > > 4TH TEST: > ------------ > Instead of loading the php_mssql70.dll from the php.ini file. I started to load it > from the code. So I have uncommented the line dl (php_mssql70.dll) from the code. > > The test is again with the status table. > > What is the result? > > First Time: > > resource(1) of type 16 > bool(true) > resource(2) of type 15 > array(2) { [0]=> int(1) [1]=> string(5) "teste" } > 1-teste > > After the reload: > > resource(1) of type 19 > bool(true) > resource(2) of type 18 > array(2) { [0]=> int(1) [1]=> string(5) "teste" } > 1-teste > > Anther: > > resource(1) of type 22 > bool(true) > resource(2) of type 21 > array(2) { [0]=> string(1) "1" [1]=> string(5) "teste" } > 1-teste > > Another: > > resource(1) of type 25 > bool(true) > resource(2) of type 24 > array(2) { [0]=> int(1) [1]=> string(5) "teste" } > 1-teste > > Another: > > resource(1) of type 28 > bool(true) > resource(2) of type 27 > array(2) { [0]=> int(1) [1]=> string(5) "teste" } > 1-teste > > Another: > > resource(1) of type 31 > bool(true) > resource(2) of type 30 > array(2) { [0]=> string(1) "1" [1]=> string(5) "teste" } > 1-teste > > ...And after a lot of reloads: > > resource(1) of type 2116 > bool(true) > resource(2) of type 2115 > array(2) { [0]=> string(1) "1" [1]=> string(5) "teste" } > 1-teste > > ...I stopped here. > > Two VERY STRANGES things is happening here. The first of them is that the php > seems to be alocating a lot of resources. At the others teste this was not > ocurring. > > And the other error is that sometimes the stacod fiels is integer and the others > is string!!!! Why????!!! > > 5TH TEST: > ----------- > > Now I have stopped to use the ISAPI DLL and started to use the phpts.exe the CGI > version from swwwing.com. > > One note about that: I have to put the php.ini file in c:\winnt directory. The > others core files and modules was in c:\winnt\system32 and the ISAPI DLL have > read the php.ini file in the same directory but the phpts.exe only found it on > c:\winnt. > > Well, after this little problem... > > I have configured the php.ini to load the extension php_mssql70.dll. And I have > commented the line dl(php_mssql70.dll) in my code. And also configured the IIS to > execute the phpts.exe > > What was the result??? > > resource(1) of type 2 > bool(true) > resource(2) of type 1 > array(2) { [0]=> string(1) "1" [1]=> string(5) "teste" } > 1-teste > > And it was always like that. Is was similar with the first test but now with no > Access Violation anymore. > > But the error with the data type of the field stacod is happening again... > The stacod is not a string. > > 6TH TEST: > --------- > > At this step I stoped to load the mssql extension from the php.ini file and started > to load it from my code with the line dl(php_mssql70.dll). That's the only change. > > What was the result: > > resource(1) of type 16 > bool(true) > resource(2) of type 15 > array(2) { [0]=> int(1) [1]=> string(5) "teste" } > 1-teste > > And it was always like that after the reloads... > > With this configuration, at this test, no errors were found. > > ---------------------------- > > Conclusion: > > The best configuration appears to be currently to load the php CGI version (phpts.exe > from swwwing.com) and to load the extension at the code instead of using php.ini. > > ---------------------------- > > And the others configurations? What is happening? I don't know. But is appearing to bee > bugs. > > > >

« previous php.dev (#22243) next »