Jump to content
  • 0

Nie dodaje produktów do indexu, nie wyświetla wyników


adrian99

Question

Mam 15.000 produktów i nie dodaje jeśli chcę przebudować cały index to np. przebuduje 700 produktów i mieli od 0 następnie przebudowuje w tle dalej dojedzie do 2.000 produktów i znowu zaczyna to robić od zeraz. Co jest tego przyczyną nie mam już pomysłów. Usuwałem zawartość tabel w bazie: ps_search_word oraz ps_search_index dalej jest to mielenie od nowa, ale co ciekawe po kilkunastu minutach dojedzie do końca. Co z tego jak wpisując w wyszukiwarke prazę wyświetla prawidłowo ilość produktów, ale nie wyświetla listy produktów (tylko same strony) dodam też, że w trakcie wyszukiwania można zauważyć, że jeśli skrypt jest nie wiem przy 3.000 produkcie to na daną frazę wyszuka mi poprawnie jakąś ilość i wyświetli wyniki, ale jeśli index jest przebudowany jest sytuacja z wynikami wyszukiwania jw. Pomóżcie.

Edited by adrian99 (see edit history)
Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Ciężko powiedzieć, co jest przyczyną, na podstawie podanych przez Ciebie informacji. Może jest to błąd w jednej z wersji sklepu Prestashop (w jakiej wersji masz sklep?).

Jednak najbardziej prawdopodobne wydaje mi się, że jest to problem związany w konfiguracji serwera HTTP (będąc bardziej ścisłym - z ustawieniami w pliku php.ini). Czy tak dzieje się na konkretnym hostingu? Czy posiadasz serwer dedykowany, albo serwer wirtualny (VPS)? Czy masz dostęp do konfiguracji pliku php.ini na swoim serwerze?
Czy potrafisz włączyć tryb debugowania Prestashop (może wyświetlają się jakieś błędy)? 

Link to comment
Share on other sites

  • 0

Włączyłem tryb debugowania wyskakuje w czasie procesu:

 

Fatal error: Uncaught Deadlock found when trying to get lock; try restarting transaction<br /><br /><pre> INSERT IGNORE INTO ps_search_word (id_lang, id_shop, word) VALUES (1, 1, '7641b6'),(1, 1, '764100001'),(1, 1, '80142306516131'),(1, 1, '7641bl4'),(1, 1, 'kaptur'),(1, 1, 'regulowany'),(1, 1, 'sznurkiem')</pre> thrown in /home/serwer/www/classes/db/Db.php on line 646

 

to hosting na ovh na którym nie było z tym nigdy problemu. Po wgraniu tak dużej bazy wystąpił problem. Mówie dojedzie do końca, ale mieli kilkanaście razy do różnych miejsc i od nowa. Może ten błąd coś wyjaśni?

Link to comment
Share on other sites

  • 0

Po wpisaniu w wyszukiwarkę słowa z którym min. miało problem wyskakuje poniższy błąd jeśli mam włączony tryb pokazywanie błędów. Wcześniej tak jak pisałem p prostu nie pokazuje listy produktów wyszukiwania. Dodam też, że z wieloma produktami nie ma problemu chyba te, których wyświetla większą ilość są problematyczne dla presty. Błąd po wpisaniu frazy wyszukiwania:
 

[PrestaShopDatabaseException]

Lost connection to MySQL server during query

SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,
				pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`name`,
			 MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` manufacturer_name ,(
				SELECT SUM(weight)
				FROM ps_search_word sw
				LEFT JOIN ps_search_index si ON sw.id_word = si.id_word
				WHERE sw.id_lang = 1
					AND sw.id_shop = 1
					AND si.id_product = p.id_product
					AND (sw.word LIKE '%spodnie')
			) position, MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute,
				DATEDIFF(
					p.`date_add`,
					DATE_SUB(
						NOW(),
						INTERVAL 20 DAY
					)
				) > 0 new, MAX(product_attribute_shop.minimal_quantity) AS product_attribute_minimal_quantity
				FROM ps_product p
				 INNER JOIN ps_product_shop product_shop
		ON (product_shop.id_product = p.id_product AND product_shop.id_shop = 1)
				INNER JOIN `ps_product_lang` pl ON (
					p.`id_product` = pl.`id_product`
					AND pl.`id_lang` = 1 AND pl.id_shop = 1 
				)
				LEFT JOIN `ps_product_attribute` pa	ON (p.`id_product` = pa.`id_product`)
				 LEFT JOIN ps_product_attribute_shop product_attribute_shop
		ON (product_attribute_shop.id_product_attribute = pa.id_product_attribute AND product_attribute_shop.id_shop = 1 AND product_attribute_shop.`default_on` = 1)
				 LEFT 
			JOIN ps_stock_available stock
			ON (stock.id_product = p.id_product AND stock.id_product_attribute = IFNULL(`product_attribute_shop`.id_product_attribute, 0) AND stock.id_shop = 1  AND stock.id_shop_group = 0  )
				LEFT JOIN `ps_manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer`
				LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product`) LEFT JOIN ps_image_shop image_shop
		ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1 AND image_shop.cover=1)
				LEFT JOIN `ps_image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = 1)
				WHERE p.`id_product`  IN (68,69,70,71,122,123,124,125,126,127,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,742,744,745,746,747,748,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,827,833,834,835,836,837,838,851,852,853,854,855,856,857,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,915,916,917,918,919,920,921,922,927,928,929,930,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1053,1054,1055,1056,1057,1058,1059,1060,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,11166,11167,11168,11169,11170,11171,11172,11173,11174,11175,11176,11177,11178,11179,11180,11181,11182,11183,11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11219,11220,11221,11222,11223,11224,11225,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241,11242,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11323,11324,11325,11326,11327,11328,11329,11340,11341,11346,11369,11370,11371,11372,11373,11374,11375,11376,11377,11378,11379,15065,15066,15067,15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079,15080,15081,15082,15095,15096,15097,15098,15099,15100,15101,15102,15103,15104,15105,15106,15107,15108,15109,15110,15111,15112,15161,15162,15163,15164,15165,15166,15167,15168,15169,15170,15171,15172,15209,15210,15211,15212,15213,15214,15215,15216,15217,15218,15219,15220,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343,15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355,15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367,15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379,15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391,15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403,15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415,15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427,15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439,15440) 
				GROUP BY product_shop.id_product
				ORDER BY  position desc
				LIMIT 0,15

at line 646 in file classes/db/Db.php

641. 			WebserviceRequest::getInstance()->setError(500, '[SQL Error] '.$this->getMsgError().'. From '.(isset($dbg[3]['class']) ? $dbg[3]['class'] : '').'->'.$dbg[3]['function'].'() Query was : '.$sql, 97);
642. 		}
643. 		elseif (_PS_DEBUG_SQL_ && $errno && !defined('PS_INSTALLATION_IN_PROGRESS'))
644. 		{
645. 			if ($sql)
646. 				throw new PrestaShopDatabaseException($this->getMsgError().'<br /><br /><pre>'.$sql.'</pre>');
647. 			throw new PrestaShopDatabaseException($this->getMsgError());
648. 		}
649. 	}
650. 
651. 	/**
Link to comment
Share on other sites

  • 0

Posiadasz bardzo rozbudowany sklep - wiele produktów. Jeżeli masz serwer dedykowany, albo VPS, proszę dodaj w pliku /etc/mysql/my.cnf  lub my.ini -
linijkę:
max_allowed_packet
=64M

Jeśli istnieje, zmodyfikuj ją na powyższa wartość.

Źródło:
http://stackoverflow.com/questions/6516943/lost-connection-to-mysql-server-during-query


Wciąż nie wiem, jaką posiadasz wersję Prestashop. Ale aktualizacja do najnowszej mogłaby pomóc, bez wprowadzania powyższych zmian.
Link to comment
Share on other sites

  • 0

To zależy, co jest twoim problemem.

 

Jeżeli masz na myśli problem z pierwszego postu, to powinien już nie występować, jeżeli twój hostingodawca zgodzi się na zmianę ustawień. (nie znam dokładnie umowy między tobą, a nim, aby powiedzieć, czy ma w obowiązku się zgodzić)

Jednak wciąż nie będziesz widział gdzie są pliki: /etc/mysql/my.cnf  lub my.ini i nie będziesz ich mógł zmieniać samodzielnie.

Link to comment
Share on other sites

  • 0

Okazuje się, że w ofercie mam własny serwer mysql w którym będę mógł wprowadzić zmiany w plikach na własną rękę. Trzeba jedynie przerzucić wszystko do nowej bazy czym zaraz się zajmę. Zobaczymy co z tego wyjdzie dam znać chociażby dla tych, który mają ten sam kłopot. 

Link to comment
Share on other sites

  • 0

Pomogło przeniesie bazy na indywidualny serwer mysql. Nie musiałem nic zmieniać w plikach my.ini nie trzeba było też ponownie indeksować produktów być może sugestie kolegi będą pomocne przy tym problemie. W ustawieniach starszej bazy chyba czegoś brakowało i dlatego ten problem. Gdzieś kiedyś na forum znalazłem tekst typu "Presta jest tajemnicza jak kobieta" i chyba tak zostanie. Dziękuję za naprowadzenie inaczej nie poradziłbym sobie z tym problemem.

 

Pozdrawiam

Link to comment
Share on other sites

  • 0

Super, że udało się pomóc!

Co do tego, że "Presta jest tajemnicza niż kobieta" - to miałbym zastrzeżenie. Jeśli poświęci się kilka lat na naukę MySQL'a, PHP, HTML'a, CSS'a, JavaScriptu - a później pogrzebie się trochę w Prestashopie - da się zrozumieć jak to działa. Kobiety - nie da się zrozumieć do końca, nawet żyjąc z nią przez całe życie. ;)

  • Like 1
Link to comment
Share on other sites

  • 0

Super, że udało się pomóc!

 

Co do tego, że "Presta jest tajemnicza niż kobieta" - to miałbym zastrzeżenie. Jeśli poświęci się kilka lat na naukę MySQL'a, PHP, HTML'a, CSS'a, JavaScriptu - a później pogrzebie się trochę w Prestashopie - da się zrozumieć jak to działa. Kobiety - nie da się zrozumieć do końca, nawet żyjąc z nią przez całe życie. ;)

no co ty? nie nadazysz poznac jej w calosci. zanim dokopiesz do jakis fukncji, ktore dopisali w najnowszej wersji to juz pojawia sie kolejna wersja i tam kolejne funkcje do poznania ;) tez presta, tak jak i kobieta "zmienna jest" ;)

Edited by design4VIP (see edit history)
Link to comment
Share on other sites

  • 0

Dokładnie z roku na rok Presta jest mi coraz bardziej przyjazna, ale i tak cały czas dochodzą nowe dziwne problemy z jej funkcjonowaniem. Co do twojego porównania nic dodać nic ująć haha. Z innej beczki problem, którego nie rozwiązałem jeśli mogę. Mam bazę produktów z ilościami 0-brak na stanie 1-mała ilość -2 - duża ilość. Pozwalam zamawiać użytkownikom nawet jeśli produktu nie ma na stanie. Te ilości produktów powinny być stałe (niezmienne) a presta po zamówieniu odejmuje mi np. od ilości 1 ilość zamawianych sztuk np. 17 i w bazie pokazuje mi -16 sztuk. Czy można jakoś zatrzymać odejmowanie ilości? Wiem, ze odpowiada za to Product.php i tam kombinowałem z tabelą ps_stock_available w której są zapisywane ilości jednak edycja pliku nic mi nie wniosła i to jeszcze jeden nie rozwiązany problem

Link to comment
Share on other sites

  • 0

raczej potrzebowalbys grzebac nie tyle w Product co kontrolerach 'order' - szukaj funkcji dzialajacych w hook orderConfirmation

 

po pierwsze, takie zmodyfikowane pliki powinny ladowac w ./override, po drugie po kazdej zmianie (dodania nowego) kontrolera usun plik ./cache/classes-index.php

Edited by design4VIP (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...