PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (37): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Найдено сообщений: 542
event
Отправлено: 03 Февраля, 2015 - 13:44:35 • Тема: Таблица MySQL • Форум: Вопросы новичков
Ответов: 6 Просмотров: 292
GoDr , все, получилось. Спасибо!
Такой вопрос, как обслуживать базу когда много записей? У меня 400к и никак не могу добавить еще одну ячейку...
event
Отправлено: 03 Февраля, 2015 - 00:41:30 • Тема: Таблица MySQL • Форум: Вопросы новичков
Ответов: 6 Просмотров: 292
Мелкий , скрипт сломал.
#144 - Table '.\site\texts' is marked as crashed and last (automatic?) repair failed
Вот ошибка... чего делать.......
(Добавление)
GoDr , поставил, подключился. Все функции вижу, а от как отремонтировать?
event
Отправлено: 02 Февраля, 2015 - 15:43:17 • Тема: Как ускорить/оптимизировать код? • Форум: Вопросы новичков
Ответов: 2 Просмотров: 249
Привет.
Ребят, как можно ускорить/оптимизировать этот код?
PHP:
скопировать код в буфер обмена
<?PHP
require_once ( "system.php" ) ;
$f = fopen ( "1.txt" , "r" ) ;
if ( $cat == 65) {
}
$ccc = get_row_count( "links WHERE categoryid = '" . $cat . "'" ) ;
if ( $ccc == 0) {
die ( '<meta http-equiv="refresh" content="0;URL=parser.php" />' ) ;
}
$result = $mysqli -> query ( "SELECT * FROM links WHERE categoryid = '" . $cat . "' LIMIT 100" ) or sqlerr( __FILE__ , __LINE__ , $mysqli -> error ) ;
while ( $row = $result -> fetch_assoc ( ) ) {
$urls [ ] = $row [ 'link' ] ;
}
foreach ( $urls as $url ) {
$url = "http://studopedia.net" . $url ;
$channels [ $url ] = $ch ;
}
$active = null ;
do {
} while ( $mrc == CURLM_CALL_MULTI_PERFORM) ;
while ( $active && $mrc == CURLM_OK) {
continue ;
}
do {
} while ( $mrc == CURLM_CALL_MULTI_PERFORM) ;
}
foreach ( $channels as $value => $channel ) {
$value = str_replace ( "http://studopedia.net" , "" , $value ) ;
$name = iconv ( "WINDOWS-1251" , "UTF-8" , $name ) ;
preg_match ( "#</noindex>\s+</td></tr></table>(.*?)</center><hr>#si" , $site , $tmp ) ;
$result = preg_replace ( '#<noindex.*?</noindex>|<script.*?</script>|<ins.*?</ins>|<!--.*?-->#si' , '' , $tmp [ 1
] ) ;
$text = iconv ( "WINDOWS-1251" , "UTF-8" , $text ) ;
foreach ( $urlsex [ 1] as $val ) {
$urlsex_end .= $val . "\n " ;
}
$result = $mysqli -> query ( "INSERT INTO texts (name, text, image_urls, categoryid, link) VALUES (" . implode ( ", " , array_map ( "sqlesc" , array ( $name , trim ( $text ) , trim ( $urlsex_end ) , $cat , $value ) ) ) . ")" ) or sqlerr
( __FILE__ , __LINE__ , $mysqli -> error ) ;
$mysqli -> query ( "DELETE FROM links WHERE link = " . sqlesc
( trim ( $value ) ) ) or sqlerr
( __FILE__ , __LINE__ , $mysqli -> error ) ;
}
#echo "Осталось обработать: " . $ccc . " записей " . $cat . " категории.";
#echo '<br /><br />Время выполнения скрипта: '.(microtime(true) - $start).' сек.';
?>
<meta http-equiv="refresh" content="0;URL=parser.php" />
Может где-то присутен говно-код? и т.д., тыкните что может решать на скорость
event
Отправлено: 01 Февраля, 2015 - 23:06:09 • Тема: Таблица MySQL • Форум: Вопросы новичков
Ответов: 6 Просмотров: 292
Как починить таблицу с 400к записями? А то не хочет она через phpmyadmin чинится (REPAIR TABLE texts)?
Что делать? Какие варианты?
event
Отправлено: 30 Января, 2015 - 14:46:22 • Тема: Вопрос • Форум: Вопросы новичков
Ответов: 16 Просмотров: 623
Привет.
Такой вопрос, поставил на самописный сайт визуальный редактор - CKEditor.
Такой вопрос, в базу он записывает html, туда записываю через htmlspecialchars. А как правильно выводить из базы? А то переживаю что какой-то пользователь введет туда javscript. Что подскажите?
event
Отправлено: 29 Января, 2015 - 23:56:56 • Тема: Скрипт PHP • Форум: Вопросы новичков
Ответов: 3 Просмотров: 260
короче потестирова скрипт, всю малину портит что юзаю бд очень много.
(Добавление)
KingStar , точно не так, ответ очень-очень быстрый
(Добавление)
Все, сделал. Теперь работает как самолет.
event
Отправлено: 29 Января, 2015 - 18:50:16 • Тема: Скрипт PHP • Форум: Вопросы новичков
Ответов: 3 Просмотров: 260
Привет.
Написал скрипт - парсер, на PHP. Парсер на cuRL с многопоточностью. Скриптом доволен, но как-то долго парсит, я думал с многопоточностью будет намного скорее.
Скрипт парсера:
PHP:
скопировать код в буфер обмена
<?PHP
$categoryid = $_GET [ 'cat' ] ;
die ( "Error Category ID!" ) ; }
function get_row_count( $table , $suffix = "" ) {
global $mysqli ;
if ( $suffix )
$suffix = " $suffix " ;
( $r = $mysqli -> query ( "SELECT COUNT(*) FROM $table $suffix " ) ) ;
( $a = $r -> fetch_row ( ) ) ;
return $a [ 0] ;
}
function sqlesc( $value ) {
global $mysqli ;
$value = "'" . $mysqli -> real_escape_string ( $value ) . "'" ;
}
return $value ;
}
function sqlerr( $file = "" , $line = "" , $error = "" ) {
global $USER ;
die ( "<b>MySQL Error:</b><br /><b>File:</b> " . $file . " <b>Line:</b> " . $line . "<br /><b>Error:</b> " . $error ) ; }
"host" => "localhost" ,
"user" => "root" ,
"password" => "123456" ,
"database" => "site" ,
"charset" => "utf8"
) ;
$mysqli = @ new mysqli( $mysql [ 'host' ] , $mysql [ 'user' ] , $mysql [ 'password' ] , $mysql [ 'database' ] ) ;
@ $mysqli -> query ( "SET NAMES " . $mysql [ 'charset' ] ) ;
}
$ccc = get_row_count( "links WHERE categoryid = '" . $cat . "' AND used='no'" ) ;
$catnext = $cat + 1 ;
if ( $cat > 64) {
}
if ( $ccc == 0) {
echo '<meta http-equiv="refresh" content="0;URL=3.php?cat=' . $catnext . '" />' ;
}
$result = $mysqli -> query ( "SELECT * FROM links WHERE used = 'no' AND categoryid = '" . $categoryid . "' LIMIT 5" ) or sqlerr( __FILE__ , __LINE__ , $mysqli -> error ) ;
while ( $row = $result -> fetch_assoc ( ) ) {
$urls [ ] = $row [ 'link' ] ;
}
foreach ( $urls as $url ) {
$url = "http://URL_SITE" . $url ;
$channels [ $url ] = $ch ;
}
$active = null ;
do {
} while ( $mrc == CURLM_CALL_MULTI_PERFORM) ;
while ( $active && $mrc == CURLM_OK) {
continue ;
}
do {
} while ( $mrc == CURLM_CALL_MULTI_PERFORM) ;
}
foreach ( $channels as $value => $channel ) {
$name = iconv ( "WINDOWS-1251" , "UTF-8" , $name ) ;
preg_match ( "#</noindex>\s+</td></tr></table>(.*?)</center><hr>#si" , $site , $tmp ) ;
$result = preg_replace ( '#<noindex.*?</noindex>|<script.*?</script>|<ins.*?</ins>|<!--.*?-->#si' , '' , $tmp [ 1
] ) ;
$text = iconv ( "WINDOWS-1251" , "UTF-8" , $text ) ;
foreach ( $urlsex [ 1] as $val ) {
$urlsex_end .= $val . "\n " ;
}
$result = $mysqli -> query ( "INSERT INTO texts (name, text, image_urls, categoryid, link) VALUES (" . implode ( ", " , array_map ( "sqlesc" , array ( $name , trim ( $text ) , trim ( $urlsex_end ) , $cat , $value ) ) ) . ")" ) or sqlerr
( __FILE__ , __LINE__ , $mysqli -> error ) ;
$mysqli -> query ( "UPDATE links SET used = 'yes' WHERE link = " . sqlesc( $value ) ) or sqlerr( __FILE__ , __LINE__ , $mysqli -> error ) ;
}
$a = get_row_count( "links" ) ;
$b = get_row_count( "texts" ) ;
$number1 = $a ;
$number2 = $b ;
$result = ( $number2 / $number1 ) * 100 ;
echo "Обработано: " . $b . " / " . $a . " (" . round ( $result ) . "%)." ;
echo '<br /><br />Время выполнения скрипта: ' . ( microtime ( true ) - $start ) . ' сек.' ;
?>
<meta http-equiv="refresh" content="0;URL=3.php?cat=<?= $cat ; ?> " />
Подскажите, как можно ускорить работу? Может у меня есть где-то ошибка?
На выполнение одного раза выполнения скрипта (это парсинг 5 статей) уходит 5 секунд. Это нормально?
Прошлый парсер у меня был тоже на курл, но без многопоточности, и парсил 1 запись /2 сек.
В чем моя ошибка?
event
Отправлено: 29 Января, 2015 - 01:39:31 • Тема: Запрос • Форум: Вопросы новичков
Ответов: 4 Просмотров: 166
Забыл указать то что может быть в поле categoryid - неизвестно. Там может быть любая цифра.
event
Отправлено: 23 Января, 2015 - 15:39:38 • Тема: Запрос, массив • Форум: Вопросы новичков
Ответов: 9 Просмотров: 306
Sail , работает, спасибо!
(Добавление)
Кстати, а можно например еще как-то одно значение передать из запроса, например ID?
event
Отправлено: 23 Января, 2015 - 15:30:27 • Тема: Запрос, массив • Форум: Вопросы новичков
Ответов: 9 Просмотров: 306
skiphog , спасибо, заработало:
PHP:
скопировать код в буфер обмена
$result = $mysqli -> query ( "SELECT link, categoryid FROM links WHERE used = 'no' LIMIT 10" ) or sqlerr( __FILE__ , __LINE__ , $mysqli -> error ) ;
while ( $row = $result -> fetch_assoc ( ) ) {
$urls [ ] = $row ;
}
Не знаю как правильно сказать, если ссылка, и к ней должна привязываться ID из ячейки categoryid.
Потом такой foreach должен быть:
Вот так задумано, но не получается(
event
Отправлено: 23 Января, 2015 - 15:22:10 • Тема: Запрос, массив • Форум: Вопросы новичков
Ответов: 9 Просмотров: 306
PHP:
скопировать код в буфер обмена
$result = $mysqli -> query ( "SELECT link, categoryid FROM links WHERE used = 'no' LIMIT 10" ) or sqlerr( __FILE__ , __LINE__ , $mysqli -> error ) ;
while ( $row = $result -> fetch_assoc ( ) ) {
$urls = $row ;
}
Интересно почему выводит:
CODE (
htmlphp ):
скопировать код в буфер обмена
array ( 2 ) { [ "link" ] => string
( 60 ) "/11_14749_algoritm-bazovih-reanimatsionnih-meropriyatiy.html" [ "categoryid" ] => string
( 1 ) "5" } , должно вывести 10 таких записей...
event
Отправлено: 23 Января, 2015 - 15:06:03 • Тема: Запрос, массив • Форум: Вопросы новичков
Ответов: 9 Просмотров: 306
skiphog , спасибо - работает.
Еще такую вопрос, как в этом массиве можно привязать к ссылке номер категории (он хранится в ячейке categoryid в таблице links)?
Страниц (37): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB