Doctrine 2配置和性能

时间:2013-02-26 23:31:00

标签: php performance configuration doctrine-orm wamp

我在localhost上遇到了一些Doctrine 2的问题。一个页面只使用一个查询,在大约1.5秒内加载到localhost上。同时,在远程服务器上加载大约需要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);

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

安装APC

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

按照this教程进行以下修改:

  • link to apc.dll
  • 从phpinfo()中找到 Zend Extension Build PHP Extension Build ;您可以将http://localhost/?phpinfo=1用于您的WAMP localhost
  • 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\(替换你的版本的X.X ...) 在其中写下extension=php_apc.dll;
  • 关闭/打开Wamp(不重启)
  • 来自wamp icon-&gt; php-&gt; PHP扩展 - &gt; php_apc.dll检查激活
  • 重新启动wamp

您可以通过将apc.php文件下载到项目目录中来验证APC是否正在运行。您将在压缩的file available at the PECL website中找到它。拿最新版本。

现在从您的浏览器: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.phpclearcache.php

提高Mysql性能

  1. link1
  2. link2
  3. link3
  4. 清理本地机器

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

    这就是我过去在本地机器上提高Doctrine2速度所做的一切。 你也可以监控Mysql / Apache进程使用的Ram,看看你是不是也没有。需要购买/分配更多内存。