[FX.php List] FM Scripts vs. PHP

Dale Bengston dbengston at preservationstudio.com
Sat Oct 27 08:54:11 MDT 2007


Dan and Derrick,

Thanks for the definitive round-up. That's definitely a thread to save!

Dale

On Oct 26, 2007, at 11:28 AM, DC wroue:

> hi derrick, thanks for that practical advice. i read your post with  
> real interest because i've been arriving at the same conclusions -  
> especially the part about the "development time" value of (even a  
> slow) legacy app.
>
> i'd love to do everything in php and sql but the fact is there is a  
> large amount of work ahead for me to be able do that - so i'm doing  
> it in stages and phasing out old stuff where possible.
>
> but even that goal is complicated by our existing FMP solutions  
> because, as you and others have noted - FMP offers other benefits  
> beyond raw speed.
>
> dan
>
> Derrick Fogle had written:
>> I've done a LOT of work with PHP - talking both to MySQL and to FM  
>> (versions 6, 7, and 8) via FX.php, even using PHP as a data  
>> migration processor between MySQL and FM databases. It didn't take  
>> long to run into performance problems on the FM side, so I've  
>> ended up doing a fair amount of testing: between FM and MySQL, and  
>> between the various methods of getting data in and out of FM.
>> I won't even address FM6; consider it a dead horse. For FM 7/8,  
>> here are a few things I've learned (which may be less applicable  
>> with FM9, but probably still persists to some degree):
>> 1. MySQL is so much faster than FM as a back-end database, you can  
>> have horribly inefficient code talking to MySQL and it will still  
>> be faster than the most optimized code talking to FM. I'm talking  
>> so much faster that's it's hard to measure, like: FM takes 3.5  
>> seconds to do operation X; MySQL takes... oh it's done by the time  
>> I get my finger off the start button on my stopwatch. So I use the  
>> microtime functions in PHP and discover that FM takes 3.5 seconds,  
>> and MySQL takes 3.5 milliseconds for the same thing.
>> 2. There is a huge time overhead in any single XML request to FM.  
>> It's a lot worse on Mac-based servers than Windows-based servers,  
>> BTW. I consistently get the best performance by doing the least  
>> number of queries to FM as possible. That means it's faster to get  
>> data out of a single FM call to a single FM layout with portals to  
>> retrieve related data. than it is to make 2 separate calls to FM.  
>> The more data in the related record set, the worse the difference  
>> gets.
>> 3. FM's API only allows updating a single record per call. SQL  
>> allows the updating of any group of records in one call. Because  
>> of the time overhead associated with any XML request to FM, an FM  
>> solution becomes rubbish if you need to update more than just a  
>> few records. Using portals to get the updates into a single call  
>> should help this, but I haven't tested that particular method and  
>> don't plan to.
>> This brings us back to the original issue of FM scripts vs. PHP:  
>> at some point (say, 20 records need changed) using FM scripts ends  
>> up being the best choice among poor choices to do multi-record  
>> processing.
>> Again, if your operations are primarily workgroup FM-based, with  
>> only a small, low-traffic web presence for specific stuff,  
>> whatever you do with FM is probably going to be fine. Processing  
>> power is cheap, and even when FM is dog-slow compared to MySQL, if  
>> the traffic is low enough, it won't make a practical difference to  
>> your users. This is where I'm at, and where I would suspect a lot  
>> of people on an FM list are at.
>> If your operations are mostly web-based, or you have a lot of web  
>> traffic (say, a busy online store or intranet for a big  
>> workforce), I honestly don't think it will matter that much how  
>> you approach getting data in and out of FM. The performance will  
>> be poor unless you throw a lot of hardware at it. A single server  
>> running Linux, Apache, MySQL, and PHP (LAMP), will be able to  
>> outperform a whole rack full of systems dividing up the tasks of  
>> running FM Server, the webconnector, and multiple IIS servers to  
>> respond to client requests.
>> Of course, the biggest cost of just about anything is the  
>> development time. Do you already have a good FM solution running?  
>> If so, you can probably throw a lot of hardware and licensing  
>> costs at expansion, and spend less money overall.
>> Oh well, I've got to get back to my real job now.  ;-)
>> On Oct 26, 2007, at 2:36 AM, Leo R. Lundgren wrote:
>>> Am I misunderstanding the features of portals? In other databases  
>>> you have the ability to JOIN tables, which seems much more  
>>> flexible to me in that with FM portals you can only go one level  
>>> down a hierarchy, so to speak. That's a pain in the ass, and it's  
>>> made me collect my data in other ways than using portals.
>> Derrick Fogle
>> derrick at fogles.net
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list



More information about the FX.php_List mailing list