php, mysql, apache, html, css, js, jquery, kohana framework; photoshop, gimp, inkscape, 3ds max, unity3d, c#; delphi;
Контакты

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (12)
  • Как правильно написать запрос sql для вывода данных из 2х таблиц?

    LINKeRxUA
    @LINKeRxUA
    web dev
    Ваши таблицы не отвечают даже первой нормальной форме!
    Лучше привести к такому виду:

    stuff //товары                banner
    id| price| ... и т.д.            id|width|height| ... и т.д.
    |                                 |
    |      stuffToBanner              |
    |____stuffID | bannerID___________| // и эта комбинация должна быть PK,
    // FK на "stuff.id" и  FK на "banner.id"


    Тоесть есть:
    товары с ID, 1,2,3,4,5,6,7,8,9,10
    баннеры с ID, 1,2

    и связная таблица
    stuffID, bannerID
    1,1
    1,2
    3,1

    Тогда по INNER JOIN можно очень быстро определить что выводить, а что нет
    Ответ написан
    Комментировать
  • Как разделить текст на 2 части php?

    LINKeRxUA
    @LINKeRxUA
    web dev
    Вот набросал:
    Должно розделить на 2 части.
    Определить позицию обрыва строки с конца в первой части и с начала во второй.
    По этому - определяем, какому блоку принадлежит часть текста что больше. Ну и соответственно делим
    <?php
    $text = 'aaa'.PHP_EOL.'bbbbb'.PHP_EOL.'ccccccc'.PHP_EOL.'dddd'.PHP_EOL.'eeeeeeeeeeeee'.PHP_EOL.'fff';
    
    $length = strlen($text);
    $half = (int) ($length / 2);
    
    $part_1 = substr($text,0, $half);
    $part_2 = substr($text,$half);
    
    
    
    $eol_1 = strrpos( $part_1, PHP_EOL, 0); 			// last  position from string start of first part
    $eol_2 = $half + strpos( $part_2, PHP_EOL, 0 );		// first position from string start of second part
    
    
    $shift_1 = $half - $eol_1; // char shift size till middle point of first block
    $shift_2 = $eol_2 - $half; // char shift size till middle point of last block
    	
    	if($shift_1 < $shift_2){ // PHP_EOL is closer to firts block, so larger size of block saved in second block
    
    	    $part_1 = substr($text,0,$shift_1);
    		$part_2 = substr($text,$shift_1);
    	
    	}else{	
    		
    		$part_1 = substr($text,0,$eol_1);
    		$part_2 = substr($text,$eol_1);
    		
    	}
    echo '<pre>';
    var_dump( array(
    	'length' 		=> $length, 
    	'middle point' 	=> $half, 
    	'position of EOL of first block' => $eol_1,
    	'position of EOL of second block' => $half + $eol_2,
    	
    ) );
    var_dump( $part_1, $part_2 );
    
    ?>
    Ответ написан
    4 комментария
  • Как распараллелить процессы php?

    LINKeRxUA
    @LINKeRxUA
    web dev
    Я бы делал так:
    Сперва собрать в таблицу БД коллекцию ссылок для обработки парсером. По завершению - не через file_get_html() а через мультипоточный cURL запросить контент и сохранить его в базу. По завершению - в цикле пробежаться по таблице и порциями в 20 записей выбирать id не обработанных парсером записей и тем же мультикурлом запросить другой урл для обработки, к примеру "/parser.php?id=1" .../parser.php?id=20"
    Каждый из 20 запросов будет работать паралельно.

    Скорее всего у вас проблема не в парсинге а соединении. По-этому мультикурл вам поможет, так как это подобно открытию страниц одновременно в нескольких вкладках браузера, а ваш код - это работ в одном окне и в одной вкладке.

    И между прочем расставьте метки времени в своем коде для профилирования и отсчета времени на операцию. и вы будете знать наверняка, что заняло больше времени.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (10)