Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 10-27-2004, 12:28 AM
darcyb darcyb is offline
 
Join Date: Oct 2004
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default What renders/loads quicker: mysql select, or fopen() in php

Hey folks. I want to make my own random quotes box in the header of my vb pages, and can't decide which solution to use:

1-Text file, quotes separated by \n, loaded with fopen() in php, grabbing one at random every page load

2-Store the quotes in a table, and have mysql grab one at random every page load

Any experience with this to keep performance up? I had an fopen hack on my phpBB2 forum which loaded really fast, but haven't compared it to a mysql query.
Reply With Quote
  #2  
Old 10-27-2004, 12:09 PM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Storing in MySQL is much better as, DBs are optimized to access to single rows very fast
Reply With Quote
  #3  
Old 10-27-2004, 12:58 PM
darcyb darcyb is offline
 
Join Date: Oct 2004
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok, good advice Xenon, thanks! My strategy will now be to count rows, and generate a random int between 1 and max_rows, and then do a SELECT by that random ID, grabbing the quote text.

My next challenge is importing my text file of quotes. Each quote is separated by a newline character (\n). I created a table with a primary ID of type int(11), and a longtext field. I'm having difficulty importing it by means of phpmyadmin, because the ID field is chomping off the first 11 characters of each quote as it tries to fill the auto_completing primary field. Annoying!

I may have to go into Excel and add a prefixing column 11 characters wide.
Reply With Quote
  #4  
Old 10-27-2004, 01:42 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by darcyb
Ok, good advice Xenon, thanks! My strategy will now be to count rows, and generate a random int between 1 and max_rows, and then do a SELECT by that random ID, grabbing the quote text.
Hmm ... what about

PHP Code:
$quote $DB_site->query_first("SELECT * FROM " TABLE_PREFIX "quotes ORDER BY RAND() LIMIT 1"
?
Reply With Quote
  #5  
Old 10-27-2004, 03:33 PM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

your Datatypes are too big i think.

You won't need longtext, i assume text would be long enough (or do you have quotes longer than 65k chars?)

also how much quotes do you have

small unsigned int may also fit in better.

Of course your fields will do the correct things, but optimising where possible can't hurt
Reply With Quote
  #6  
Old 10-27-2004, 04:06 PM
darcyb darcyb is offline
 
Join Date: Oct 2004
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Oh ok. I had mistakingly assumed that longtext was good for quotes 3-4 lines long, 80 chars per line. So no, they're not longer than 65k chars hehe. I didn't know 'text' was that roomy.

I have 130 quotes and the list grows daily.
Reply With Quote
  #7  
Old 10-27-2004, 06:48 PM
CarCdr CarCdr is offline
 
Join Date: Apr 2004
Posts: 242
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Plain fopen() should be faster. Letting Apache handle it without using a script should be MUCH faster. Static content does not have to interact with the MySQL server.
Reply With Quote
  #8  
Old 10-27-2004, 07:47 PM
Code Monkey's Avatar
Code Monkey Code Monkey is offline
 
Join Date: May 2004
Posts: 1,080
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Database is usually faster than file operations.
Reply With Quote
  #9  
Old 10-27-2004, 08:49 PM
Xenon's Avatar
Xenon Xenon is offline
 
Join Date: Oct 2001
Location: Bavaria
Posts: 12,878
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by CarCdr
Plain fopen() should be faster. Letting Apache handle it without using a script should be MUCH faster. Static content does not have to interact with the MySQL server.
Erm, as you have to go through the whole file to get a random quote, it will get slower and slower with fopen.

The connection to the file may be faster, but going through the file will be the slower part of it.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 09:53 PM.


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.04699 seconds
  • Memory Usage 2,243KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (9)postbit
  • (9)postbit_onlinestatus
  • (9)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete