0

设置

  • CakePHP 2.3.5
  • PHP 5.3.8
  • 阿帕奇 2.2
  • PostgreSQL 8.4
  • Windows 7 专业版 x64

这是我项目中的很多情况之一,CakePHP 需要超过 1 秒才能呈现一个简单的视图。我测试了所有可能的请求……ajax、json、get、post、put、delete……在每一个中,CakePHP 都很慢。

Obs.:我在本地工作:数据库、服务器、git 等。都在我的机器上。


问题 1)

我有这个代码:

$('#multiple').delegate('.plus-payment', 'click', 
  function(event) {
    event.preventDefault();

    $.ajax({
      url: "<?php echo $this->Html->url(array('controller' => 'authorizations', 'action' => 'credit_card', $table_num, $check_num)); ?>",
      data: {},
      dataType: 'html',
      success: function(data) {
        
        $('#multiple').append(data);
        return false;

      }
    });
      }
);

那个行动:

public function credit_card($table_num, $check_num)
{
  
if ($this->request->is('ajax')) {

  $this->layout = 'ajax';
  $this->render('modal_credit_card');

} elseif ($this->request->is('post')) {

这,称之为视图:

<div class="payment">
    <div class="swipe">
        <label class="checkbox">
            <?php echo $this->Form->checkbox('Authorization.swipe.', array('value' => 'by_hand', 'label' => false, 'div' => false, 'hiddenField' => false, 'class' => 'swipeoff')) ?><?php echo __('Manual') ?>
        </label>
    </div>

    <?php echo $this->Form->input('Authorization.card_number.', array('label' => false, 'div' => false, 'placeholder' => __('Swipe Card'))) ?>
    <?php echo $this->Form->input('Authorization.exp_date.', array('required' => false, 'label' => false, 'div' => false, 'class' => 'expdate input-mini', 'placeholder' => __('Validade'))) ?>

    <span class="input-prepend">
        <span class="add-on">$</span>
        <?php echo $this->Form->input('Authorization.amount.', array('label' => false, 'div' => false, 'class' => 'input-small', 'placeholder' => __('Valor'))) ?>
    </span>


    <a href='#' class="btn btn-success plus-payment"><i class="icon icon-plus icon-white"></i></a>
    <a href='#' class="btn btn-danger remove-payment"><i class="icon icon-trash icon-white"></i></a>
    <hr>
</div>

CakePHP 需要 2~3 秒,才能返回视图。

所以为什么?

只是一个视图,没有数据库连接,没有查询,没有条件......只是渲染。

Obs.:在 PHP 5.4.8 测试,请求在 0.2~1 秒内执行。 我不知道为什么

4

1 回答 1

1

app/Config/bootstrap.php 在您的(大约第 36 行)中将 debug 更改为 0 :

Configure::write('debug', 0);

当它是2(默认用于开发目的)时,它会运行很多额外的过程,包括查询所有表以检查更新的模式......等等。

如果不是这样,您可以使用DebugKit不仅查看有关正在运行的所有内容的详细信息,还可以查看每个单独的进程/查询...等所花费的时间,并找出问题所在和/或发生了什么运行时间最长。

于 2013-05-17T20:11:55.237 回答