[support] cached content even if in !$may_cache section (drupal 5)
Ivan Sergio Borgonovo
mail at webthatworks.it
Sun Apr 19 14:45:10 UTC 2009
On Sun, 19 Apr 2009 14:02:54 +0000
Earnie Boyd <earnie at users.sourceforge.net> wrote:
> Quoting Ivan Sergio Borgonovo <mail at webthatworks.it>:
>
> > I've a
> >
> > if(!$may_cache) {
> > $item[] = array(
> > 'path' => 'some/path',
> > 'callback' => 'somefunction',
> > );
> > }
> >
> > function somefunction() {
> > $result=db_query("...");
> > ...
> > $output.=$somedynamicstuff;
> > return $output;
> > }
> >
> > but the result get cached anyway.
> >
> > Cache is set to normal.
> >
> > What could it be?
> >
> Could the problem be your assumption that the $may_cache in the
> hook_menu affects the form? Or am I missing your question?
This is D5. And yeah even if the snippet didn't use a *form* there
is a form involved in the real case.
So let's make the snippet more complete and add the steps to
reproduce the problem.
/* hook_menu */
if(!$may_cache) {
$item[] = array(
'path' => 'some/path1',
'callback' => 'stuffthatchangedb',
);
$item[] = array(
'path' => 'some/path2',
'callback' => 'drupal_get_form',
'callback arguments' => array('stuffthatdependsondb'),
);
}
function stuffthatchangedb() {
db_query('insert values(someid, somefield) values(default, 97);
drupal_goto('some/path2');
}
function stuffthatdependsondb() {
$result = db_query("select someid, somefield from table1;");
while($row = db_fetch_array($result)) {
$form['something'][$row['someid']] = array(
'#type' => 'textfield',
'#default_value" => $row['somefield'],
);
}
return $form;
}
I visit some/path1.
some/path1 add a record to table1
I get redirected to some/path2.
I visit once more some/path1
some/path1 add a record to table1
some/path2 still show the content of the first time I visited it.
Real code is even more complicated...
stuffthatchangedb is actually another form but suffice to say... I
know it is doing it's duty and records get added to "table1", so my
expectation is I'd see them in stuffthatdependsondb form, since
drupal_get_form is called from the !$may_cache part of the menu hook.
If I disable the cache I don't incur in this problem.
Still I'd expect that stuff generated in the !$may_cache section of
the menu don't get cached.
--
Ivan Sergio Borgonovo
http://www.webthatworks.it
More information about the support
mailing list