[support] Cron and clearing caches to update field data..

Earnie Boyd earnie at users.sourceforge.net
Wed Oct 3 17:22:29 UTC 2012


On Wed, Oct 3, 2012 at 9:59 AM, Christian Lopez <clopez at emergya.com> wrote:
> On Wed, Oct 3, 2012 at 2:39 PM, Earnie Boyd <earnie at users.sourceforge.net>
> wrote:
>>
>> On Tue, Oct 2, 2012 at 4:30 PM, Wipe_Out wrote:
>> > On 2 October 2012 19:57, Earnie Boyd <earnie at users.sourceforge.net>
>> > wrote:
>> >>
>> >> On Tue, Oct 2, 2012 at 2:23 PM, Wipe_Out
>> >> <wipe_out at users.sourceforge.net>
>> >> wrote:
>> >> > On 2 October 2012 17:59, Michael Prasuhn <mike at mikeyp.net> wrote:
>> >> >>
>> >> >> How are you updating the field?
>> >> >> __________________
>> >> >> Michael Prasuhn
>> >> >> http://mikeyp.net
>> >> >>
>> >> >
>> >> > Directly in the database..
>> >> >
>> >> > I know its bad and it means none of the Drupal hooks run but its the
>> >> > only
>> >> > way we could do this one particular update easily and in testing
>> >> > other
>> >> > than
>> >> > it not displaying immediately it doesn't seem to have any adverse
>> >> > effects..
>> >>
>> >> By directly do you mean using SQL or node_load/node_save?  You should
>> >> never use SQL to directly update the node.  You may programmatically
>> >> update it using node_load, modify object parameter then follow with
>> >> node_save.  This allows all the other node hooks to operate properly.
>> >
>> > Yes I know but in this case we didn't have a choice so had to try it..
>> > Its
>> > just updating a datetime field with a new value.. The testing we did
>> > didn't
>> > reveal any issues other than the fact that the cache needs to be cleared
>> > for
>> > the new values to show in Drupal..
>> >
>> > Originally we tried updating with a CSV through the feeds module but
>> > there
>> > is a timezone bug in feeds that stops this working..
>>
>> The node_save() would DTRT with the cache record.
>>
>> --
>> Earnie
>> -- https://sites.google.com/site/earnieboyd
>> --
>> [ Drupal support list | http://lists.drupal.org/ ]
>
>
> If you can do a bootstrap and assuming you know the nid, you can use
>
>     entity_get_controller('node')->resetCache(array($node->nid));
>
> or
>
>   cache_clear_all();
>
> if you're using Drupal 6.

This still circumvents the hook_node* implementations.  You shouldn't
do this, node_save() will DTRT for you.

http://api.drupal.org/api/drupal/modules%21node%21node.module/function/node_save

-- 
Earnie
-- https://sites.google.com/site/earnieboyd


More information about the support mailing list