[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: php 5.2.17 и 5.3 разница в скорости выполнения.
Myma
Нужна помощь в настройке php 5.3* Дело в том, что скорость выполнения скрипта отличается в 10 раз (без преувеличений) 16 секунд против 3+минуты (скрипт копирует данные из mysql в mysqlite). Самый просто способ конечно поставить 5.2.17 но как ни странно, у меня это сделать не выходит уже 2й день (debian), да и боюсь что панель будет работать нестабильно, если ковыряться там, тем более у меня даже на виртуальной машине этого сделать не получилось). А дело может быть в одной какой-нибудь настройке в php.ini ... В общем, подскажите, в чем может быть дело
Вот скрипт:

<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_time_limit(0);

##### Параметры #########################################################################################
$mysql_host = '*';
$mysql_user = '*';
$mysql_pass = '*';
$mysql_dbname = '*';
$mysql_table = '*';
$sqlite_dbfile = '*';
$sqlite_table = '*';
#################################################################################################### #####

mysql_connect($mysql_host, $mysql_user, $mysql_pass) or die(mysql_error());
mysql_select_db($mysql_dbname) or die(mysql_error());

$r = mysql_query("SELECT ip, c_port FROM `".$mysql_table."` WHERE `status` = 1 AND `type`='halflife'");
$added = 0;
$updated = 0;
if (mysql_num_rows($r) > 0) {
try {
$dbh = new PDO('sqlite:'.$sqlite_dbfile);
while ($row = mysql_fetch_assoc($r)) {
$fields = array(
'_lastHeartBeat' => '2147483647',
'protocol' => '47',
'players' => '1',
'max' => '24',
'bots' => '0',
'gamedir' => 'cstrike',
'map' => 'de_dust2',
'type' => 'd',
'password' => '0',
'os' => 'w',
'secure' => '0',
'lan' => '0',
'version' => '1.1.2.5',
'region' => '255',
'product' => 'cstrike',
'gameport' => '',
'specport' => '',
'dedicated' => '',
'appid' => '',
'proxy' => '',
'gdversion' => '',
'nap' => '10',
'rating' => 0,
# 'rated_order' => '0',
);
$row=array_map('trim', $row);
$res = $dbh->query("SELECT COUNT(*) FROM `".$sqlite_table."` WHERE `_address`='".$row['ip'].":".$row['c_port']."'");
if ($res->fetchColumn() > 0) {
$fields_sql = array();
foreach ($fields as $key => $value) {
$fields_sql[] = "`".$key."`='".$value."'";
}
$fields_sql = implode(',', $fields_sql);
$sql = "UPDATE `".$sqlite_table."` SET ".$fields_sql." WHERE `_address`='".$row['ip'].":".$row['c_port']."'";
if ($dbh->query($sql)) $updated++;
} else {
$keys_sql = array();
$values_sql = array();
foreach ($fields as $key => $value) {
$keys_sql[] = "`".$key."`";
$values_sql[] = "'".$value."'";
}
$keys_sql = implode(',', $keys_sql);
$values_sql = implode(',', $values_sql);
$sql = "INSERT INTO `".$sqlite_table."` (`_address`,".$keys_sql.") VALUES('".$row['ip'].":".$row['c_port']."',".$values_sql.")";
if ($dbh->query($sql)) $added++;
}
}

$dbh = null;
} catch (PDOException $e) {
print "Error!: ".$e->getMessage()."<br/>";
die();
}
}

print 'Rows added: '.$added.'<br />Rows updated: '.$updated;

#################################################################################################### ##########################################


?>


Видео с экспериментом на windows: php5.avi

Такое ощущение что в 5.3 скрипт по одному запросу отправляет в базу, а в 5.2 сначала кэширует в памяти, а потом одним запросом все выполняет. Это плохо еще потому что пока в 5.3 выполняется скрипт база заблокирована и программа, которая ее использует, не работает.



Спустя 15 часов, 8 минут, 14 секунд (4.12.2011 - 11:43) Myma написал(а):
Посоветуйте хотя б как сделать даунгрейд на 5.2.17 на debian ?

Спустя 1 день, 12 часов, 14 минут, 35 секунд (5.12.2011 - 23:57) Nika84 написал(а):
))народ, нас самом деле, посоветуйте, есть профессионалы?

Спустя 19 минут, 13 секунд (6.12.2011 - 00:16) Nikitian написал(а):
Покажите конфиги из обоих вариантов.

Спустя 26 минут, 45 секунд (6.12.2011 - 00:43) Myma написал(а):
Вот, но в них нет абсолютно никакой разницы, кроме

[PHP_PDO]
extension=php_pdo.dll

Его нет в php5.3, я его скопировал из 5.2,но это ничего не изменило

Спустя 17 часов, 23 минуты, 4 секунды (6.12.2011 - 18:06) VELIK505 написал(а):
тебе чем помочь php 5.3 переустановить на php 5.2 ?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.