vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   What renders/loads quicker: mysql select, or fopen() in php (https://vborg.vbsupport.ru/showthread.php?t=71035)

darcyb 10-27-2004 12:28 AM

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.

Xenon 10-27-2004 12:09 PM

Storing in MySQL is much better as, DBs are optimized to access to single rows very fast :)

darcyb 10-27-2004 12:58 PM

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.

Andreas 10-27-2004 01:42 PM

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"

?

Xenon 10-27-2004 03:33 PM

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 ;)

darcyb 10-27-2004 04:06 PM

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.

CarCdr 10-27-2004 06:48 PM

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.

Code Monkey 10-27-2004 07:47 PM

Database is usually faster than file operations.

Xenon 10-27-2004 08:49 PM

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.


All times are GMT. The time now is 01:58 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.01142 seconds
  • Memory Usage 1,729KB
  • 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
  • (1)bbcode_php_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)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