Das Problem könnte auch ein ganz anderes sein:
Ich habe vorhin gerade erst bei einem Kunden ebenfalls im Portal (2.0.0) die Funktion phpbb_fetch_posts() so umgebaut, dass die Verarbeitung der Attachments und der Beitragstexte unterbunden wird, wenn im Modul "Aktuelle Beiträge" die Anzeige der News im kompakten Block-Stil aktiviert ist.
Auf dem betreffenden Board sind bereits eine stattliche Anzahl Beiträge vorhanden und es werden alle Foren in das Modul eingebunden.
Ohne meinen Fix lädt das Portal bis zum PHP-Timeout und bleibt leer, mit dem Fix wird alles angezeigt.
Das ändert aber nur bedingt das eigentliche Problem:
Die Verarbeitung der aktuellen Beiträge ist bereits sehr umfangreich, gerade wenn man ettliche Module im Portal installiert hat.
Um nicht die PHP-Einstellungen massiv nach oben zu schrauben, damit das Problem beseitigt wäre, sollte hier noch mal ein Auge drauf geworfen werden.
Und ich war erstaunt, dass hier bereits mit 3 Beiträge auf dem Portal Schluß war. 5 hatte der Kunde eingestellt, die jetzt auch wieder da sind. Nach dem Fix...
Für die Berücksichtigung der News-Darstellung habe ich in der Datei portal/includes/functions.php hierfür folgende Änderung gemacht:
Die Zeilen
Code: Select all
while ($row = $db->sql_fetchrow($result))
{
$attachments = array();
if (($auth->acl_get('u_download') && ($auth->acl_get('f_download', $row['forum_id']) || $row['forum_id'] == 0)) && $config['allow_attachments'] && $row['post_id'] && $row['post_attachment'])
{
// Pull attachment data
$sql2 = 'SELECT *
FROM ' . ATTACHMENTS_TABLE . '
WHERE post_msg_id = '. $row['post_id'] .'
AND in_message = 0
ORDER BY filetime DESC';
$result2 = $db->sql_query($sql2);
while ($row2 = $db->sql_fetchrow($result2))
{
$attachments[] = $row2;
}
$db->sql_freeresult($result2);
}
$posts[$i]['bbcode_uid'] = $row['bbcode_uid'];
$len_check = $row['post_text'];
$maxlen = $text_length;
if (($text_length != 0) && (strlen($len_check) > $text_length))
{
$message = str_replace(array("\n", "\r"), array('<br />', "\n"), $row['post_text']);
$message = get_sub_taged_string($message, $row['bbcode_uid'], $maxlen);
$posts[$i]['striped'] = true;
}
else
{
$message = str_replace("\n", '<br/> ', $row['post_text']);
}
$row['bbcode_options'] = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row['enable_magic_url']) ? OPTION_FLAG_LINKS : 0);
$message = generate_text_for_display($message, $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']);
if (!empty($attachments))
{
parse_attachments($row['forum_id'], $message, $attachments, $update_count);
}
ersetzt durch
Code: Select all
while ($row = $db->sql_fetchrow($result))
{
$posts[$i]['bbcode_uid'] = $row['bbcode_uid'];
if (!$config['board3_news_style_' . $module_id])
{
$attachments = array();
if (($auth->acl_get('u_download') && ($auth->acl_get('f_download', $row['forum_id']) || $row['forum_id'] == 0)) && $config['allow_attachments'] && $row['post_id'] && $row['post_attachment'])
{
// Pull attachment data
$sql2 = 'SELECT *
FROM ' . ATTACHMENTS_TABLE . '
WHERE post_msg_id = '. $row['post_id'] .'
AND in_message = 0
ORDER BY filetime DESC';
$result2 = $db->sql_query($sql2);
while ($row2 = $db->sql_fetchrow($result2))
{
$attachments[] = $row2;
}
$db->sql_freeresult($result2);
}
$len_check = $row['post_text'];
$maxlen = $text_length;
if (($text_length != 0) && (strlen($len_check) > $text_length))
{
$message = str_replace(array("\n", "\r"), array('<br />', "\n"), $row['post_text']);
$message = get_sub_taged_string($message, $row['bbcode_uid'], $maxlen);
$posts[$i]['striped'] = true;
}
else
{
$message = str_replace("\n", '<br/> ', $row['post_text']);
}
$row['bbcode_options'] = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE : 0) + (($row['enable_smilies']) ? OPTION_FLAG_SMILIES : 0) + (($row['enable_magic_url']) ? OPTION_FLAG_LINKS : 0);
$message = generate_text_for_display($message, $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']);
if (!empty($attachments))
{
parse_attachments($row['forum_id'], $message, $attachments, $update_count);
}
}
else
{
$message = '';
}
Mag vielleicht "unprofessionell" wirken, aber es funktioniert; in der Kürze der Zeit...