My suggestion is to download, compile and use valgrind and see what
problems that highlights in your code.

--Wez.

On 2/23/06, D. Walsh <[EMAIL PROTECTED]> 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

Reply via email to