dgwip_updinfo_1030005.txt - (c) 2007 Uwe Disch - http://disch-systems.de Release notes for version 1.03.0005 of DISCH Gateway IP: With this release of the software of the DISCH Gateway IP you are receiving an update to EIB Driver. This update removes one segmentation fault in pthreads rsp. LinuxThreads library while exiting EIB Driver SDK-based applications like dps_requests. Result of this fix is an increase in performance of EIB Driver and dps_requests. Starting with this release NameServer and EIBDriver are using lock files to prevent manifold starts of NameServer rsp. EIBDriver. WARNING: This update has potential to break your existing visualization because of performace increase of EIB Driver and dps_requests! Please read further. Beware, if you have PHP scripts that execute several times, i.e. more than two times, the dps_requests program, that you can receive an empty result of your exec call. The return value of exec is in this case 0x0B (decimal: 11), i.e. "OS error code 11: Resource temporarily unavailable". This is because of tight system resources, i.e. RAM and BogoMIPS, of the gateway hardware. There are mainly two options to circumvent this: - Retry the call of exec if the return value of exec was 0x0B until the return value isn't 0x0B. Danger: the load of your DISCH Gateway IP will possibly increase! You will find an example in the of the visualization example. - Use proc_open and friends instead of exec in this way: open a shell and pipe the commands, i.e. the different calls of dps_requests, into it. At the end of your script close the pipes and the shell. Advantage: you don't have to spend the overhead in starting a shell several times. You will find an example in the respectively in of the visualization example. In general the timing differences of different actions are (faster actions mentioned first, these are only very rough numbers): - RBU instead of RNB for every group address: -10 ms - Read or write access with new release instead of old one, for every call of dps_requests: -250 ms - Usage of proc_open and friends instead of one exec: +60 ms - Usage of proc_open and friends instead of repeated exec, per repeated exec: -30 ms The typical execution times of PHP scripts of the visualization example are: - 700 ms (reading of five group addresses with exec) - 1.600 ms (reading and writing two group addresses via proc_open) - 1.600 ms (reading and writing two group addresses via proc_open) - 650 ms (writing one group address with exec) - 650 ms (writing one group address with exec) - 100 ms (simple page, no group address access) Reading an additional group address with RBU (RNB) will delay execution of dps_requests about 10 ms (20 ms). Both implementation options you will find demonstrated in our visualization example. Please study the PHP scripts carefully.