Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 08-16-2011, 11:08 PM
ipscone ipscone is offline
 
Join Date: Jul 2002
Posts: 38
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Disable Content Cashing Problem

RE: vB CMS 4.1.5

I read someone else with the problem. It was titled "Solved" but I didn't see the solution. Then it was reported as a but.

I have the same problem and not sure how to fix it. I have a Widget for, that uses Direct PHP. It works perfectly, if I set "Disable Content Caching" to "Yes". But works one time, if I set it to "No" then requires waiting a refresh interval, before it works again. If I refresh before the interval is up, the execution fails.

The code is for a Featured Photo Widget, for integrating PhotoPost into vB CMS 4.1.5 Front Page.

I'm really not sure there is any point in showing the code, since I know it works when content caching is disabled. But people always ask. Here is the code.

Code:
ob_start(); 

// I removed some particulars to the path in the line below, but it's set correctly in my code.
require '/path/to/photopost/config-int.php';

// I deleted some password stuff here

$link = mysql_connect ("$dbhost", "$dbuser", "$dbpass") or die('I cannot connect to the database.');
mysql_select_db ("$dbname")or die("Could not select photopost database");

// Number of photos to display
$num_display = 4;

// Number of columns (1 for vertical)
$columns = 4;

// which type of images do you want to show (random, most_view, latest)
$q_switch = "random";


// == END CONFIGURATION ==
////////////////////////////////////////////////////////////////////////////


function pp_get_ext( $filename )
{
    return substr($filename, strrpos($filename,"."));
}

function pp_get_filename($filename)
{
    return str_replace( pp_get_ext($filename), "", $filename );
}

function pp_is_image( $filename )
{
    $mediatypes = array( ".jpg", ".gif", ".png", ".bmp" );
    $ext = pp_get_ext( $filename );

    if ( in_array(strtolower($ext), $mediatypes) )
    {
        return( true );
    }

    return( false );
}

function pp_is_multimedia( $filename )
{
    $mediatypes = array( ".avi", ".mov", ".mpg", ".mpeg", ".swf", ".flv" );
    $ext = pp_get_ext( $filename );

    if ( in_array(strtolower($ext), $mediatypes) )
    {
        return( true );
    }

    return( false );
}

$resultc = mysql_query("SELECT setting FROM {$pp_db_prefix}settings WHERE id=133");
list( $seotype ) = mysql_fetch_row($resultc);

$resultd = mysql_query("SELECT setting FROM {$pp_db_prefix}settings WHERE id=6");
list( $data_full ) = mysql_fetch_row($resultd);
//
// Featured Photos Code
// Follow down to End Feature Photos Code
//

switch ($q_switch)
{
    case "most_view":
        $query = "SELECT p.id,p.user,p.userid,p.cat,p.bigimage,p.title,c.catname,c.photos,c.posts
                        FROM {$pp_db_prefix}photos p
                        LEFT JOIN {$pp_db_prefix}categories c ON c.id = p.cat
                        WHERE p.storecat = 0
	                ORDER BY views DESC";
        break;

    case "latest":
        $query = "SELECT p.id,p.user,p.userid,p.cat,p.bigimage,p.title,c.catname,c.photos,c.posts
                        FROM {$pp_db_prefix}photos p
                        LEFT JOIN {$pp_db_prefix}categories c ON c.id = p.cat
                        WHERE p.storecat = 0
                        ORDER BY date DESC";
        break;

    default:
        $query = "SELECT p.id,p.user,p.userid,p.cat,p.bigimage,p.title,c.catname,c.photos,c.posts
                        FROM {$pp_db_prefix}photos p
                        LEFT JOIN {$pp_db_prefix}categories c ON c.id = p.cat
                        WHERE p.storecat = 0
                        ORDER BY RAND()";
}
$result = mysql_query($query) or die(mysql_error());

$counted = 0;
$countcol = 0;
$pppro_imagebits = null;

while (list($pid,$puser,$puserid,$pcat,$photo,$ptitle,$catname,$cphotos,$cposts) = mysql_fetch_row($result))
{

    if ( pp_is_image($photo)|| pp_is_multimedia($photo) )
    {
	    if ( pp_is_image($photo) )
	    {
	        if ( $seotype == "seo" )
	        {
	            $plink = "<td><a href=\"{$url_path}/$catname/p{$pid}-{$ptitle}.html\"><img src=\"{$data_dir}/{$pcat}/thumbs/$photo\" border=\"0\" alt=\"\" /></a></td>";
	            $catlink = "<a href=\"{$url_path}/g{$pcat}-{$catname}.html\">$catname</a><br />";
	        }
	        else
	        {
	            $plink = "<td><a href=\"{$url_path}/showphoto.php?photo={$pid}\"><img src=\"{$data_dir}/{$pcat}/thumbs/$photo\" border=\"0\" alt=\"\" /></a></td>";
	            $catlink = "<a href=\"{$url_path}/showgallery.php?cat={$pcat}\">$catname</a><br />";
	        }
	    }

	    if ( pp_is_multimedia($photo) )
	    {
	        $filenoext = pp_get_filename( $photo );
	        $mmthumb = "{$data_dir}/$pcat/thumbs/$filenoext.jpg";
	        $dirthumb = "{$data_full}/$pcat/thumbs/$filenoext.jpg";

	        if ( !file_exists($dirthumb) )
	        {
	            $mmthumb = "{$url_path}/images/video.gif";
	        }

	        if ( $seotype == "seo" )
	        {
	            $plink = "<td><a href=\"{$url_path}/$catname/p{$pid}-{$ptitle}.html\"><img src=\"{$mmthumb}\" border=\"0\" alt=\"\" /></a></td>";
	            $catlink = "<a href=\"{$url_path}/g{$pcat}-{$catname}.html\">$catname</a><br />";
	        }
	        else
	        {
	            $plink = "<td><br /><a href=\"{$url_path}/showphoto.php?photo={$pid}\"><img src=\"{$mmthumb}\" border=\"0\" alt=\"\" /></a></td>";
	            $catlink = "<a href=\"{$url_path}/showgallery.php?cat={$pcat}\">$catname</a><br />";
	        }
	    }

// One box for each feature
$pppro_imagebits .= <<<PPPRINT
    <td align="left" class="alt1">
        <table cellpadding="0" cellspacing="0" border="0">
         <tr>
         $plink
         </tr>
        </table>
        <font size="1" face="verdana,arial">by {$puser}<br />
        ? ? ?<br />
        $catlink
        $cphotos photos<br />$cposts comments<br /></font>
    </td>
PPPRINT;

        $counted++;
        $countcol++;
    }

    // If we've reached our limit, quit
    if ( $counted == $num_display )
    {
        break;
    }

    // If we need to end the column, do so.
    if ( $countcol == $columns )
    {
$pppro_imagebits .= <<<PPPRINT
    </tr>
    <tr>
PPPRINT;

    $countcol = 0;
    }
}
@mysql_free_result($result);

$pppro_imagebits = '<table cellpadding="$stylevar[cellpadding]" cellspacing="1" border="0" width="100%">'.$pppro_imagebits.'</tr></table>';
print "$pppro_imagebits";

$output=ob_get_contents(); 
ob_end_clean();
Like I said, without "Disable Content Cashing" set to "Yes" the code doesn't work right.

It should display 4 photos, at the top of the Front Page. After 1 refresh, it displays 1 and the right page column drops and goes to the center. It's busted unless I disable content caching.

Is there a fix to this problem?
Reply With Quote
  #2  
Old 08-16-2011, 11:34 PM
Reycer Reycer is offline
 
Join Date: Jul 2008
Location: Lebanon, MO (USA)
Posts: 747
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

https://www.vbulletin.com/forum/show...t-seem-to-work.

http://tracker.vbulletin.com/browse/VBIV-8082

Does this solve your problem?
Reply With Quote
  #3  
Old 08-17-2011, 01:07 AM
ipscone ipscone is offline
 
Join Date: Jul 2002
Posts: 38
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No, it doesn't help. That fix was for a previous version. I can't find that code anywhere in the area of line 166, for the first part. And the second part already has the conditional.

When I set refresh to 0, I still have the problem.

In fact, both of those links suggest the problem is still present.

Update

Very strange. After looking at the code, it looked like the fixes above, are already in the 4.1.5 release. So, I went back to the widget and set the refresh to 0, again. Still had the same problem. Played around with it for a while, clearing the CMS cashe and trying a few things and all of a sudden it started working.

Then, I tried to repeat the problem. Set the cache refresh to 1, and the problem returned. Set it back to 0 and still had the problem. Then, I cleared the CMS cache again and it started working. It looks like I just had to perform a manual clear CMS cashe, one time after setting the refresh to 0 and it works.

So, for now, it looks like the problem has gone away. I'll post again, if it returns.
Reply With Quote
Reply

Thread Tools
Display Modes

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:22 AM.


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.07533 seconds
  • Memory Usage 2,186KB
  • 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_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)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