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

Reply
 
Thread Tools Display Modes
  #1  
Old 12-31-2006, 11:52 AM
sv1cec sv1cec is offline
 
Join Date: May 2004
Location: Athens, Greece
Posts: 2,091
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Problem with getimagesize function

I have a serious problem with a modification I have done.

I've modified the handle_bbcode_img_match function in functions_bbcodeparse.php of vB, to check for large images in the posts. The code of the function has been extended to use the getimagesize function to check for the size of the images. However, this results in extreme increase of the time it takes to load a page, with lots of images. For example, a page which has 7 pictures and loads in 1.20 seconds without the size checking, takes 6.22 seconds if the function is used. Another one which has 26 pictures goes from 1.8 sec without the size checking to 30 secs when the size is checked.

Here is the code I am using to check the size of the pictures.

Code:
function handle_bbcode_img_match($link)
{
	// <-- This is the button/image that will be displayed instead of the big image.
	$img_replacement1 = "images/misc/toobigimage.gif"; 
	// <-- This is the button/image that will be displayed when there is no image at the URL.
	$img_replacement2 = "images/misc/notexistimage.gif";
	// <-- This is the maximum width that an image is allowed to be viewed safely.
	$img_max_width = 800; 
	// <-- This is the maximum height that an image is allowed to be viewed safely.
	$img_max_height = 600; 
	
		$link = strip_smilies(str_replace('\\"', '"', $link));
		$link = str_replace('  ', '', $link);
		
		// Let's get the properties of the image. We'll also check if the image exists
		if ($imginfo=@getimagesize($link)) 
		{
			// If image exists and its size is outside our specs....
			if (($imginfo[0] > $imginfo[1] and (($imginfo[0] > $img_max_width) or ($imginfo[1] > $img_max_height))) or ($imginfo[0] < $imginfo[1] and (($imginfo[1] > $img_max_width) or ($imginfo[0] > $img_max_height))) or ($imginfo[0] == $imginfo[1] and ($imginfo[0] * $imginfo[1] > $img_max_width * $img_max_height)))
			{
				// we change the image to a link,
				$w=imageResize($imginfo[0], $imginfo[1], 100);
				$thumb="<img src=\"$link\" $w>";
				$inp_string="<table><tr><td valign=\"middle\" align=\"left\"><a href=\"$link\" target=\"_blank\"><img src=\"$img_replacement1\" border=\"0\" alt=\"\"></A></td><td valign=\"middle\" align=\"left\"><a href=\"$link\" target=\"_blank\">$thumb</A></td></tr></table><p>";
				return $inp_string;
			} 
			else
			{
				// else, we return the image.
				$inp_string='<img src="' .  $link . '" border="0" alt="" />';
				return $inp_string;
			}
		}
		else
		{
			if (!$allowimgsizefailure) 
			{
				@unlink($link);				
				// If the image does not exist at the specified URL, show the proper icon and the URL
				$inp_string="<table><tr><td valign=\"middle\" align=\"left\"><img src=\"$img_replacement2\" border=\"0\" alt=\"\"></td><td valign=\"middle\" align=\"left\">($link)</td></tr></table><p>";
				return $inp_string;
			}
		}
}
Is that particular function so slow?? Has anyone managed to come up with a better/faster solution?

I would appreciate all the help you can give me on this.
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 06:34 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.08698 seconds
  • Memory Usage 2,204KB
  • Queries Executed 11 (?)
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)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)showthread_list
  • (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_threadedmode.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids_threaded
  • showthread_threaded_construct_link
  • 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