vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   $vbulletin->datastore->fetch(array('customname')) adds 1 extra database call (https://vborg.vbsupport.ru/showthread.php?t=292223)

pxd 11-30-2012 01:08 PM

$vbulletin->datastore->fetch(array('customname')) adds 1 extra database call
 
I've been using the following lines of code to pull custom data from the datastore table:
PHP Code:

$vbulletin->datastore->fetch(array('customname'));
$data $vbulletin->customname

However, I noticed that it adds an extra database call, which means I can't actually take full advantage of the caching system in vBulletin that way.

Question is, would there be a better approach to this to avoid the extra db load to the server? Perhaps another way to hook the "customname" to the default items loaded from the datastore?

Thanks!

kh99 11-30-2012 01:38 PM

You can create a plugin using hook init_startup and do this:

Code:

$new_datastore_fetch[] = 'customname';

That may still add a query if you have no other products adding to $new_datastore_fetch, but if there are other products using it then they will be combined in to one query (the blog uses it, so if you have that then this won't add a query).

pxd 11-30-2012 03:26 PM

PHP Code:

$new_datastore_fetch[] = 'customname'

I added the above line to the "init_startup" hook and it did nothing. (I replaced "customname" with the correct title).

I also tried another formula which I came across in another discussion here on vB.org
PHP Code:

$datastore_fetch[] = "'customname'"

but it did not do anything either.

Anything else I might be missing, please?
Using vB 4.2.0.

kh99 11-30-2012 03:32 PM

Hmm...we discussed this in the coder area not too long ago, and user Disasterpiece posted this code:

Code:

global $new_datastore_fetch;

if (!isset($new_datastore_fetch) || !is_array($new_datastore_fetch)) {
    $new_datastore_fetch = array('userstats');
} elseif (!in_array('userstats', $new_datastore_fetch)) {
    $new_datastore_fetch[] = 'userstats';
}


I didn't post all that because looking at the code around the init_startup hook it doesn't look like it should be necessary, but you might want to try it.

Where are you trying to use $vbulletin->customname (or whatever the actual name is), is it in a plugin or a custom script?

pxd 11-30-2012 03:51 PM

Thanks, kh99.

For testing purposes,
I attach the following code to the "init_startup" hook
and get nothing:

PHP Code:

global $new_datastore_fetch;

if (!isset(
$new_datastore_fetch) || !is_array($new_datastore_fetch)) {
    
$new_datastore_fetch = array('customname');
} elseif (!
in_array('customname'$new_datastore_fetch)) {
    
$new_datastore_fetch[] = 'customname';
}

print_r($vbulletin->customname); 


At the same time, the following works
(even though I'd really wish to avoid using it for the sake of saving on a few db calls):

PHP Code:

$vbulletin->datastore->fetch(array('customname')); 
print_r($vbulletin->customname); 


kh99 11-30-2012 03:54 PM

Well, you won't be able to use the data in the init_startup hook because it hasn't been loaded yet, it's just adding your field to the array of fields to be loaded. But if you check $vbulletin->customname somewhere after the init_startup hook has executed (just about any other hook location since init_startup is first), you should find that it works.

pxd 11-30-2012 10:35 PM

Quote:

Originally Posted by kh99 (Post 2386868)
if you check $vbulletin->customname somewhere after the init_startup hook has executed (just about any other hook location since init_startup is first), you should find that it works.

That was it, thanks a lot!


All times are GMT. The time now is 11:37 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01436 seconds
  • Memory Usage 1,735KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (5)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete