[Zope-dev] PHP vs Zope cost benefit
Jason Spisak
jspisak@lycoris.com
Tue, 23 Apr 2002 11:07:54 -0700
Excellent thinking. I'm guessing that the PyscopyDA handles
that type of thing and makes sure that it doesn't get nasty.
That's a big win for Zope when dealing with inventory and
things like that. Thanks Oliver.
On Tuesday 23 April 2002 10:33 am, you wrote:
> Jason Spisak wrote:
> > You might remember me, I've been a big Zope fan since
> > ZTables, and have recently been asked "Why Zope?". The
> > project is commited to PostgreSQL and leaning toward PHP.
> > Here's the project requirements for a softwre company:
> >
> > Hardware Compatability List
> > Software Compatability List
> > Store/ECommerce
> > User tracking and services like
> > Pay for downloads
> > Upgrades if they have a serial number paid up
> > Billing/Invoicing for corporate accounts
> > Inventory tracking
> > CRM/Sales functions
> >
> >
> > They don't see that Zope's built in security machinery
> > would beat something home brewed for what they expect to
> > need it for. Plus the over head of running Zope instances
> > is greater than PHP scripts.
> >
> > What are the arguments for Zope in this context?
>
> Transaction Safety?
>
> When reading your requirements that was the first thing
> coming into my mind. I don't know how php does this, so I
> went to google and found
> http://www.phpbuilder.com/columns/linuxjournal200009.php3
>
> Below is one snippet, notice all the ugly "//check for
> errors" and "//abort transaction". If someone knows where I
> misinterpret something or how php solves this, corrections
> welcome.
>
> But wouldn't it be nice if we had an application server which
> would take care of all this for us?
>
> Oh, wait ... ;-)
>
> cheers,
> oliver
>
>
>
>
> function cart_new() {
> //make the database connection handle available
> global $conn,$customer_id,$feedback;
>
> //start a transaction
> query("BEGIN WORK");
>
> //query postgres for the next value in our sequence
> $res=query("SELECT nextval('seq_customer_id')");
>
> //check for errors
> if (!$res || pg_numrows($res)<1) {
> $feedback .= pg_errormessage($conn);
> $feedback .= ' Error - Database didn\'t return next
> value '; query("ROLLBACK");
> return false;
> } else {
> //set that value in a local var
> $customer_id=pg_result($res,0,0);
>
> //register the id with PHP4
> session_register('customer_id');
>
> //insert the new customer row
> $res=query("INSERT INTO customers (customer_id)
> VALUES ('$customer_id')");
>
> //check for errors
> if (!$res || pg_cmdtuples($res)<1) {
> $feedback .= pg_errormessage($conn);
> $feedback .= ' Error - couldn\'t insert new
> customer row '; query("ROLLBACK");
> return false;
> } else {
> //commit this transaction
> query("COMMIT");
> return true;
> }
> }
> }
--
Jason Spisak
Marketing Director, Lycoris
jspisak@lycoris.com,
http://www.lycoris.com
Desktop/LX: Familiar. Powerful. Open.
+1 425 869-2930 voice, +1 425 671-0504 fax