JUser :: _ load:尽管用户存在于所有3个主要joomla表中,但无法加载用户

时间:2012-05-01 23:57:52

标签: php mysql joomla

我有这个用户已经..在3个主要表格中使用,即jos_user,以及joomla的其他2个acro_和acro_map ...当我使用组件中的联系人按钮时,我收到此错误... < / p>

以下是错误:

JUser::_load: Unable to load user with id: 160529
Error loading Modules:MySQL server has gone away SQL=SELECT m.*, am.params as adv_params FROM jos_modules as m LEFT JOIN jos_advancedmodules as am ON am.moduleid = m.id WHERE m.published = 1 AND m.access <= 1 AND m.client_id = 0 ORDER BY m.ordering, m.id  

请不要担心其他错误(因为我试图找到该frm托管服务提供商的解决方案)但是目前我非常无法在使用“联系我们”按钮时无法在此joomla组件中加载用户< / p>

组件的“视图”代码::

defined('_JEXEC') or die('Restricted access'); 

$to = "";
$subject = "";
$message = "";
$Itemid = JRequest::getInt('Itemid');

$to = $this->msgSendInfo[0];
$subject = $this->msgSendInfo[1];
$message = $this->msgSendInfo[2];

$document =& JFactory::getDocument();
$document->addScriptDeclaration($this->script);
$document->addScriptDeclaration($this->users);
?>

<!-- Title -->
<div class="fsl_h3title"><b><?php echo JText::_('JBJOBS_NEWMESSAGE'); ?></b></div>
<!--<div runat="server" ID="divContent" class="border" contenteditable="true"> 
    <?php echo $message; ?>
</div>-->
<!-- Begin Form for message -->
<form action="index.php" method="post" name="adminForm" id="adminForm" >
<div class="col100">
    <table class="admintable jbj_tblborder" width="100%">
        <tr>
            <td width="100" align="right" class="key">
                <label for="to">
                    <?php echo JText::_( 'JBJOBS_TO' ); ?>:
                </label>
            </td>
            <td>
                <input class="text_area" type="text" name="to" id="to" size="32" maxlength="100" value="<?php echo $to; ?>" onkeyup="return getUser()"  readonly />
                <!--<select id="toList" style="width: 200px; float: left; margin-left: 8px; vertical-align: middle;" onchange="return setUser()" size="2">
                    <option><?php echo JText::_( 'JBJOBS_NOSUGGESTIONS' ); ?></option>
                </select>-->
            </td>
        </tr>
        <tr>
            <td width="100" align="right" class="key">
                <label for="subject">
                    <?php echo JText::_( 'JBJOBS_SUBJECT' ); ?>:
                </label>
            </td>
            <td>
                <input class="text_area" type="text" name="subject" id="subject" size="48" maxlength="100" value="<?php echo $subject; ?>" />
            </td>
        </tr>
        <tr>
            <td width="100" align="right" class="key">
                <label for="message">
                    <?php echo JText::_( 'JBJOBS_MESSAGE' ); ?>:
                </label>
            </td>
            <td>
                <?php 
                    $editor =& JFactory::getEditor();
                    echo $editor->display('message', $message, '500', '300', '60', '10', true);
                ?>
            </td>

        <!-- Do NOT remove these two input boxes -->
        <input type='hidden' id='temp' />
        <input type='hidden' id='temp2' />

        </tr>

        <tr>
            <td width="100" align="right" class="key">
                <label for="submit">

                </label>
            </td>
            <td>
                <input class="button" type="submit" name="submit" id="submit" size="32" maxlength="100" value="<?php echo JText::_( 'JBJOBS_SEND' ); ?>" />
            </td>
        </tr>
    </table>
</div>
<div class="clr"></div> <!-- Clears the float -->

    <!-- Do not edit after this point, it does not change the visual style -->
    <input type="hidden" name="option" value="com_jbjobs" />
    <input type="hidden" name="task" value="savemessage" />
    <input type="hidden" name="controller" value="jbmessaging" />
    <input type="hidden" name="Itemid" id="Itemid" value="<?php echo $Itemid; ?>" />
    <?php
    jimport('joomla.utilities.date');
    $now = new JDate();
    $date = $now->toMySQL();
    $user =& JFactory::getUser();
    ?>
    <input type="hidden" name="date" value="<?php echo $date; ?>" />
    <input type="hidden" name="idFrom" value="<?php echo $user->id; ?>" />
    <input type="hidden" name="<?php echo JUtility::getToken(); ?>" value="1" />
</form>
<script type='text/javascript'>
    <!--
    getUser();
    //-->
</script>

编辑:我的主人提供的一份说明(对过去6个月的艰苦工作的最后打击)

感谢您的联系。似乎是一个巨大的joomla用户表的问题:

# 1267920 users in jos users"
ls -laSh /var/lib/mysql/_final1
total 868M
-rw-rw---- 1 mysql mysql 452M May 2 04:51 jos_jbjobs_jobseeker.MYD
-rw-rw---- 1 mysql mysql 155M May 2 16:47 jos_users.MYD
-rw-rw---- 1 mysql mysql 120M May 2 16:47 jos_users.MYI
-rw-rw---- 1 mysql mysql 45M May 2 04:51 jos_core_acl_aro.MYD
-rw-rw---- 1 mysql mysql 36M May 2 08:30 jos_core_acl_aro.MYI
-rw-rw---- 1 mysql mysql 25M May 2 04:51 jos_core_acl_groups_aro_map.MYD
-rw-rw---- 1 mysql mysql 13M May 2 08:30 jos_jbjobs_jobseeker.MYI

joomla每64M内存限制本身就是限制

点击以下表单时

组件?联系人?新联系人

由于用户数量巨大:

链接用户。此联系人链接的用户名(如果适用)。

抛出64M限制的以下错误

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 76 bytes) in /home/ink/public_html/libraries/joomla/database/database/mysql.php on line 462
在这种情况下,实际的内存消耗远远超过1G。所以它不像服务器问题更像是一个joomla问题本身,显然joomla不是为这么多用户设计的。如果您有任何其他问题或疑虑,请告诉我们。

所以我猜joomla或许无法处理100万或500万用户?

1 个答案:

答案 0 :(得分:1)

错误消息表明MySQL没有从您的查询返回

Error loading Modules:MySQL server has gone away
  • 这可能是查询执行超时
  • PHP耗尽时间
  • 或者耗尽内存。

您的用户ID表示有大量用户 - 您的服务器是否可以胜任该作业?

<强> [编辑] 您刚刚添加的错误是PHP错误,它表示您已经耗尽了PHP 允许使用的内存,而不是Joomla !.顺便说一下Joomla的版本!你正在用吗?有了这么多用户,我倾向于使用MySQLi,它应该更快,更高效。查看错误消息中的指示行,您似乎在1.5.x

检查Joomla中的PHP设置!转到Help->System Info->PHP Information然后在memory_limit上查找以查找您的服务器PHP配置是什么。继续出现错误消息,它是64 Mbs。你的主人应该知道这一点......

[编辑2] 顺便说一下,在Joomla没有!代码库是执行ini_set('memory_limit', '64M')还是类似的,除了几个调用memory_limit使用ini_get('memory_limit')检查我在Joomla核心中找不到任何设置内存限制的内容。< / p>