Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:22020 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 41724 invoked by uid 1010); 27 Feb 2006 03:15:26 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 41708 invoked from network); 27 Feb 2006 03:15:26 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 27 Feb 2006 03:15:26 -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:54627] helo=daleenterprise.com) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id A4/7E-30574-DCE62044 for ; Sun, 26 Feb 2006 22:15:25 -0500 Received: from localhost (localhost [127.0.0.1]) by daleenterprise.com (Postfix) with ESMTP id B4A1978DF50; Sun, 26 Feb 2006 22:15:21 -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 09859-14; Sun, 26 Feb 2006 22:15:21 -0500 (EST) Received: from [10.1.100.11] (relay.mustangrestomods.com [67.78.11.226]) by daleenterprise.com (Postfix) with ESMTP id CEABD78DF4A; Sun, 26 Feb 2006 22:15:20 -0500 (EST) In-Reply-To: <4e89b4260602240411g743e3164s9d2606fdf2aeb837@mail.gmail.com> References: <8ADDACA1-2C4A-49EF-8DB5-C2529B2B892F@daleenterprise.com> <1416630C-340F-4D1F-A4D2-711286725A03@daleenterprise.com> <4e89b4260602240411g743e3164s9d2606fdf2aeb837@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v746.2) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-ID: <689D721F-94B8-4078-B08B-5D4B89B90A42@daleenterprise.com> Cc: PHP-DEV Content-Transfer-Encoding: 7bit Date: Sun, 26 Feb 2006 22:15:19 -0500 To: Wez Furlong X-Mailer: Apple Mail (2.746.2) MTA-Interface: amavisd-new-2.3.3 (2005-08-22) + 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") On Feb 24, 2006, at 07:11 , Wez Furlong wrote: > My suggestion is to download, compile and use valgrind and see what > problems that highlights in your code. Since you are specifically directing me to do this I will attempt to get valgrind installed and working in Mac OSX, as soon as I have that done I'll update you so we can proceed further. -- Dale > --Wez. > > On 2/23/06, D. Walsh wrote: >> 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 >>> >>> >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >