Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:21990 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 79174 invoked by uid 1010); 23 Feb 2006 06:44:32 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 79159 invoked from network); 23 Feb 2006 06:44:32 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 Feb 2006 06:44:32 -0000 X-Host-Fingerprint: 67.78.11.229 daleenterprise.com FreeBSD 4.7-5.2 (or MacOS X 10.2-10.3) (1) Received: from ([67.78.11.229:49218] helo=daleenterprise.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 13/63-36719-FC95DF34 for ; Thu, 23 Feb 2006 01:44:32 -0500 Received: from localhost (localhost [127.0.0.1]) by daleenterprise.com (Postfix) with ESMTP id 53376779736 for ; Thu, 23 Feb 2006 01:44:28 -0500 (EST) Received: from daleenterprise.com ([127.0.0.1]) by localhost (daleenterprise.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00348-01 for ; Thu, 23 Feb 2006 01:44:27 -0500 (EST) Received: from [10.1.100.11] (relay.mustangrestomods.com [67.78.11.226]) by daleenterprise.com (Postfix) with ESMTP id 9E0C577972D for ; Thu, 23 Feb 2006 01:44:26 -0500 (EST) Mime-Version: 1.0 (Apple Message framework v746.2) In-Reply-To: <8ADDACA1-2C4A-49EF-8DB5-C2529B2B892F@daleenterprise.com> References: <8ADDACA1-2C4A-49EF-8DB5-C2529B2B892F@daleenterprise.com> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-ID: <1416630C-340F-4D1F-A4D2-711286725A03@daleenterprise.com> Content-Transfer-Encoding: 7bit Date: Thu, 23 Feb 2006 01:44:25 -0500 To: PHP-DEV X-Mailer: Apple Mail (2.746.2) MTA-Interface: amavisd-new-2.3.3 (20050822) + Maia Mailguard 1.1.0 at daleenterprise.com Subject: Re: [PHP-DEV] extension and apache 2.x compatibility issue. From: info@daleenterprise.com ("D. Walsh") Anyone have any ideas or see the problem here??? On Feb 22, 2006, at 24:48 , D. Walsh wrote: > I had an issue with an extension that I previously posted to this > list and it was suggested I update to the newer API which might > provide a solution to the problem. > > Taking a somewhat safe approach I tackled converting the rrdtool > extension first since it was similar in functionality and protocol > to my ramdisk extension. > > Trying to convert to the new API wasn't as easy as it had been > suggested/reported. > > Steph Fox and I worked on it for several days before we finally got > it worked out. > > I tested the extension for the last week under Apache 1.3.33 and > found that the extension seemed to take less time to perform it's > functions which was well worth the effort to convert to the newer > API so thank you for the kick in this area. > > I then compiled for Apache 2 and found that I was still > experiencing the same issues so I'm sad to report that this did not > correct the problem. > > I realize that hearing "it doesn't work" or "it failed" isn't > descriptive so I'll try to provide a little more information on the > problem. > > Bear in mind that I have stepped back in time a little and have > gone with linking the RRDTool library in an attempt to remove as > many unknown variables from the equation as I possibly could and > allow testing with various version of the RRDTool library but the > RRDTool extension Tobias and I will be submitting for bundling with > PHP will not require linking to an external RRDTool library as it > will be entirely self contained however, the ability to link to an > external RRDTool library will be available provided we can get all > of our ducks in a row and satisfy the PHP license requirements > (which may already be the case). > > Building PHP for Apache 1.3, a php script calls the rrd_graph > function with a string (filename), an array (data to process) and a > long (the array count) and returns an array containing the > generated output file details. > > PHP seems to pass the variables to the linked library function > without any issues, generates the output file and returns an array > of the details with success. > > > Building PHP for Apache 2.0 and Apache 2.2, passing the same > information should yield the same results but it doesn't. > > The output file is never generated, the library complains that the > array being passed is incomplete and invalid and no array is returned. > > I've tried using both 1.0.x and 1.2.x versions of the RRDTool > library which resulted in the same issue so I've ruled out the > library function as the cause of the problem since they all worked > as expected when building PHP for Apache 1.3. > > Here's the entire rrd_graph function currently being used in the > testing phase, I've gone over the available API with Steph who > provided a lot of time, insight and assistance in helping me > convert to the new API so at this time I'm not sure what the issue > is or how to resolve it so if someone has ideas or sees a problem > I'd be most grateful to hear about it. > > ______________________________________________________________________ > _______________________________ > > PHP_FUNCTION(rrd_graph) > { > char *file; > zval *args, *entry, *p_calcpr; > HashTable *args_arr; > char **argv, **calcpr; > long php_argc, argc; > uint file_len; > int xsize, ysize, i = 0; > double ymin = 0.0, ymax = 0.0; > > > if ( rrd_test_error() ) > rrd_clear_error(); > > if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sal", > &file, &file_len, &args, &php_argc) == FAILURE) > { > return; > } > if ( args->type != IS_ARRAY ) > { > php_error(E_WARNING, "2nd Variable passed to rrd_graph is not an > array!\n"); > RETURN_FALSE; > } > > args_arr = args->value.ht; > argc = php_argc + 3; > argv = (char **) emalloc(argc * sizeof(char *)); > > argv[0] = estrdup("dummy"); > argv[1] = estrdup("graph"); > argv[2] = estrndup(file, file_len); > > > for (i = 3; i < argc; i++) > { > zval **dataptr; > > if ( zend_hash_get_current_data(args_arr, (void *) &dataptr) == > FAILURE ) > continue; > > entry = *dataptr; > > if ( entry->type != IS_STRING ) > convert_to_string(entry); > > argv[i] = estrdup(entry->value.str.val); > > if ( i < argc ) > zend_hash_move_forward(args_arr); > } > > optind = 0; opterr = 0; > #if HAVE_RRD_12X > if ( rrd_graph(argc-1, &argv[1], &calcpr, &xsize, &ysize, NULL, > &ymin, &ymax) != FAILURE ) > { > #else > if ( rrd_graph(argc-1, &argv[1], &calcpr, &xsize, &ysize) != > FAILURE ) > { > #endif > array_init(return_value); > add_assoc_long(return_value, "xsize", xsize); > add_assoc_long(return_value, "ysize", ysize); > > MAKE_STD_ZVAL(p_calcpr); > array_init(p_calcpr); > > if (calcpr) > { > for (i = 0; calcpr[i]; i++) > { > add_next_index_string(p_calcpr, calcpr[i], 1); > free(calcpr[i]); > } > free(calcpr); > } > zend_hash_update(return_value->value.ht, "calcpr", sizeof > ("calcpr"), > (void *)&p_calcpr, sizeof(zval *), NULL); > } > else > { > RETVAL_FALSE; > } > for (i = 1; i < argc; i++) > efree(argv[i]); > > efree(argv); > return; > } > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >