0

我的本地主机上的 Doctrine 2 有一些问题。仅使用一个查询的一页在大约 1.5 秒内加载到本地主机上。同时,在远程服务器上加载大约需要 300 毫秒(http://gieromaniak.pl/contact)。我不知道可能出了什么问题。是 Doctrine 2 配置还是其他?或者我的服务器上没有一些 PHP 扩展(WAMP - Apache 2.4.2、PHP 5.4.3)?

尽管如此,我还是包含了我的 Doctrine 配置文件的源代码:

<?php
use Doctrine\Common\ClassLoader,
    Doctrine\ORM\Configuration,
    Doctrine\ORM\EntityManager,
    Doctrine\DBAL\Types\Type,
    Doctrine\Common\Cache\ArrayCache,
    Doctrine\DBAL\Logging\EchoSqlLogger;


// include the class loader directly
require_once __DIR__ . '/Doctrine/Common/ClassLoader.php';

$doctrineClassLoader = new ClassLoader('Doctrine', __DIR__ . '/');
$doctrineClassLoader->register();

Config::load('base');
Config::load('database');

if(Config::get('base.mode') == 'development') {
    $bProxyGen = TRUE;
} else {
    $bProxyGen = FALSE;
}

// Set up caches
$cache = new ArrayCache;
$config = new Configuration;
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);

// Metadata Driver
$driverImpl = $config->newDefaultAnnotationDriver($models);
$config->setMetadataDriverImpl($driverImpl);

// Proxy configuration
$config->setProxyDir(PATH_ROOT.Config::get('database.proxy_dir'));
$config->setProxyNamespace(Config::get('database.proxy_namespace'));
$config->setAutoGenerateProxyClasses($bProxyGen);

// Database connection information
$connectionOptions = array(
    'driver' => 'pdo_mysql',
    'charset' => 'utf8',

    'dbname' => 'dbname',
    'user' => 'username',
    'password' => 'password',
);

// Create EntityManager
$entityManager = EntityManager::create($connectionOptions, $config);

预先感谢您的任何帮助!

4

1 回答 1

0

我建议安装 apc 并提高 mysql 性能:

安装 APC

我强烈建议为此使用 Wamp 服务器 (x86),x64 版本的 windows 的 apc.dll 不能正常工作。

按照教程进行以下修改:

  • apc.dll的链接
  • 从您的 phpinfo()中找到Zend Extension BuildPHP Extension Build;你可以将它http://localhost/?phpinfo=1用于你的 WAMP 本地主机
  • Zend Extension Build应该是这样的:

API220100525,TS,VC9

  • 注意TS字,可以为空;看看他们是否是一个不同的词,比如 NTS
  • 根据TS或NTS值下载最新版本
  • 重命名 dll php_apc.dll
  • 将 php_apc.dll 放入YourWampFolder/bin/php/ext/
  • wamp 中有 2 个 php.ini 文件:wamp\bin\apache\apacheX.X.XX\bin\并且wamp\bin\php\phpX.X.X\(用您的版本替换 XX..)写入extension=php_apc.dll;它们
  • 关闭/打开 Wamp(不重启)
  • 从 wamp icon->php->PHP extensions->php_apc.dll 检查激活
  • 重启 wamp

您可以通过将 apc.php 文件下载到您的项目目录中来验证 APC 是否正在运行。您可以在 PECL 网站上的压缩文件中找到它。获取最新版本。

现在从您的浏览器:http://localhost/yourproject/apc.php

您可以从 php.ini 修改 APC 的设置(同时尝试)

例子:

//php.ini
...

[APC]
apc.ttl=7200
apc.user_ttl=7200
apc.shm_segments=3
apc.shm_size=90M
apc.max_file_size = 2M
apc.include_once_override = 1

以防万一你想清除缓存

// resetcache.php
<?php
if ( $_GET['pass'] == 'yes') {
if(function_exists('apc_clear_cache')){
        if (apc_clear_cache() && apc_clear_cache('user'))
                print 'All Clear!';
        else
                print 'Clearing Failed!';

        print '<pre>';
        print_r(apc_cache_info());
        print '</pre>';
}else print "fuction_doesn't exist";
        } else {
        print 'Authenticate, please!';
}

apc.php我设置了一些额外的安全性来防止不必要的访问,但不包括clearcache.php在生产服务器中。

提高 Mysql 性能

  1. 链接1
  2. 链接2
  3. 链接3

清理本地机器

您可以清理浏览器缓存和临时文件夹。清洁工

这就是我过去为提高本地机器上 Doctrine2 的速度所做的一切。您还可以监视 Mysql/Apache 进程使用的 RAM,以查看是否不需要购买/分配更多 RAM。

于 2013-02-27T05:34:29.583 回答