我在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);
提前感谢您的帮助!
答案 0 :(得分:0)
我建议安装apc并提高mysql的性能:
我强烈建议使用Wamp服务器(x86),x64版本的windows的apc.dll不能正常工作。
按照this教程进行以下修改:
http://localhost/?phpinfo=1
用于您的WAMP localhost API220100525,TS,VC9
YourWampFolder/bin/php/ext/
wamp\bin\apache\apacheX.X.XX\bin\
和wamp\bin\php\phpX.X.X\
(替换你的版本的X.X ...)
在其中写下extension=php_apc.dll;
您可以通过将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.php
和clearcache.php
。