Проблеми при php скриптове които ползват много памет

Всъщност тук ще обсъдя случаите в които се пише php скрипт при изпълнението на които се извежда съобщение като:" Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 500520576 bytes) in /var/www/a.php on line 4" или с няколко думи скрипта използва повече памет от колкото му е заделена предварително. Идеята тук е защо излиза това съобщение и  как да го поправим(действието :) ).

1. Предварително заделенета памет се определя от конфигурационния файл /etc/php5/php.ini) php.ini :

memory_limit = 32M      ; Maximum amount of memory a script may consume (32MB)

В този конфигурационен файл паметта която може да използва php скрипт е максимум 32 MB. Тази стойност може да се променя разбира се.

След промяна в php.ini трябва да се рестартира apache2. След това може да се изпълни phpinfo(); и ще видите новата заделена памет за php/скрипт.

2. Друг вариант за промяна на memory_limit е за при php5-cli (command-line interpreter for the php5 scripting language) или пример:

php -d memory_limit=512M a.php

По този начин при изпълненито на a.php се заделя 512 MB памет като се пренебрегва тази стойност от php.ini

3. Интересна функция в php е memory_get_usage() която връща текущата използва памет от php скрипта:

<?php

echo memory_get_usage() . "\n"; // 48504

$a = str_repeat("mpetrov.net",100104 );

echo memory_get_usage() . "\n"; // 1150084

unset($a);

echo memory_get_usage() . "\n"; // 48504

?>

По този начин може да се направи извод колко памет ползва php от самото php. Последния пример показва всъщност, че трябва да се unset всички променливи които няма да се ползват повторно за да не заемат памет :)

Извод: Бяха разгледани няколко причини и решения за грешката в php: Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 500520576 bytes)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Стартиране на soffice

Днес ми се наложи да пусна soffice заради едни журналисти които ползват терминална система за своите работни станции(X ползвам като сървър на една машина, а другите са просто терминали(това вече 4 години)). Днес реших и на нея да пусна soffice. Ето как инсталирах soffice:

1. Инсталиране на soffice:
apt-get install openoffice.org python-uno sun-java6-jre xvfb

2. Стартиране на fakeX(ако нямаш X инсталирано се ползва fakeX):

/bin/rm -Rf /tmp/.X25-lock
xavf_log='/tmp/a.log';
nohup /usr/X11R6/bin/Xvfb :99  >> $xavf_log 2>> $xavf_log &
soffice -headless -accept='socket,host=localhost,port=8100;urp' -nofirststartwizard -nologo -nolockcheck -display :99

3. Стартиране на soffice:
soffice -headless -accept='socket,host=localhost,port=8100;urp' -nofirststartwizard -nologo -nolockcheck -display :1001

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Хранилище за Sun-Java -- Debian Lenny

Ето ги и хранилищата за да си инсталирате Sun Java на вашата система :) :

deb http://ftp2.de.debian.org/debian/ lenny main non-free
deb-src http://ftp2.de.debian.org/debian/ lenny main non-free

deb http://security.debian.org/ lenny/updates main non-free
deb-src http://security.debian.org/ lenny/updates main non-free

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

php функция за извеждане на дублиращи елементи от масив

Търсих вградена функция на PHP за извеждане на дублиращите елементи в конкретен масив, но не успях да намеря такава. Има за извеждане на уникалните и т.н. познатите …, но точно такава не успях да намеря. Затова реших да си напиша такава(Супер дълга и сложна е :) )(Обичам простите, прозрачни и ясни неща):

<?php

function arrayDuplicate($array)
{
return array_unique(array_diff_assoc($array1, array_unique($array1)));
};
?>

Пример:

Код:

<?php
$arr1 = array('foo', 'bar', 'xyzzy', '&', 'xyzzy',
'baz', 'bat', '|', 'xyzzy', 'plugh',
'xyzzy', 'foobar', '|', 'plonk', 'xyzzy',
'apples', '&', 'xyzzy', 'oranges', 'xyzzy',
'pears','foobar');

$result=arrayDuplicate($arr1);
print_r($result);exit;
?>

Изход:

Array
(
[4] => xyzzy
[12] => |
[16] => &
[21] => foobar
)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Как да намеря това което търся и това което НЕ търся (Find в GNU/Linux)

Всъщност тук идеята е да се листнат всички файлове с изключение на конкретни. Например да се листнат всички файлове с изключение на .doc файловете. Това не успях(говоря за стандартната търсачка) да го направя под Windows(просто за фън едвали щях да разчитам на него да го направи :) ).
Затова Ви препоръчвам ако ще правите това да го направите под GNU/Linux ;)

Задача: Да се изведат всички файлове които не са с разширение *.doc:
Решение: find $PWD -type f ! -name "*.doc"

Задача: Да се изтрият всички файлове с изключение на тези които не са с разширение *.doc:
Решение:  find $PWD -type f ! -name "*.doc" -exec rm -f {} \;

PS: Всяко нещо е просто до доказване на противното респективно, всяко нещо е сложно до доказване на противното

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Проблеми с preg_replace в php

Ще бъдат кратък. Когато се ползва preg_replace да се използва преди това изолиране на спец символите:

$string-shit = preg_quote($string, '/');
$string = preg_replace("/^$string_shit/", ", $string);

Идеята е да се избегнат някои грешки като тези:

Warning: preg_replace(): Compilation failed: unmatched parentheses at offset …
Warning: preg_replace(): Compilation failed: missing ) at offset …

Втори вариант:

$last_element=str_replace("/","\/",$last_element);
$last_element=str_replace(")","\)",$last_element);
$last_element=str_replace("(","\(",$last_element);

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Проблем със спирането на Windows Disk Protection

Един приятел искаше да преинсталира една машина и не успяваше и не успяваше и тогава ми донесе лаптопчето да го видя за какво иде реч. Е оказа се, че има активиран Windows Disk Protection които не позволява да се преинсталира.Междо другото машината не може да boot-не от CD/Floppy/Usb- не ми се обяснява. Гугълнах как се спира и видях, че доста хора са има същия проблем и затова реших да опиша как се спира Windows Disk Protection:

Спиране на Windows Disk Protection(създайте *.bat файл):

@echo off
: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
: Filename: SteadyState-DisableWDP.bat
:  Purpose: Disable Windows Disk Protection in Windows SteadyState 2.5
: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

echo.
echo SteadyState 2.5 introduced command line parameters that allows you to enable/disable WDP.
echo.
echo.
echo Ready to Disable Windows Disk Protection (WDP)
echo.
echo Press Ctrl-c to to cancel.
echo.

pause

rem "C:\Program Files\Windows SteadyState\SCTUI.exe" /EnableWDPAndReboot

"C:\Program Files\Windows SteadyState\SCTUI.exe" /DisableWDPAndReboot

Стартиране на Windows Disk Protection(създайте *.bat файл):

@echo off

: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
: Filename: SteadyState-EnableWDP.bat
:  Purpose: Enable Windows Disk Protection in Windows SteadyState 2.5
: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

echo SteadyState 2.5 introduced command line parameters that allows you to enable/disable WDP.
echo.
echo.
echo Ready to Enable Windows Disk Protection (WDP)
echo.
echo Press Ctrl-c to to cancel.
echo.

pause

"C:\Program Files\Windows SteadyState\SCTUI.exe" /EnableWDPAndReboot

rem "C:\Program Files\Windows SteadyState\SCTUI.exe" /DisableWDPAndReboot

PS: Аман от тия бози, АМАН

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Уеб базирана тулка за събмит на сайт

ТулкаВъв връзка с поста на Мартин -- 9 бързи, автоматични, dofollow линка , реших и аз да направя една малко по- функционална уеб форма за автоматично събмитване. Тя се основава на JS т.е. всички сайтове към които ще бъде събмитнат сайта ще бъдат отворени в нови прозорци. Не няма да ги затваряме на ръка(предполагам сте разбрали, че обичам автоматизацията). Още в самото начало където въвеждате уеб сайта за събмит има възможност за определеня на време- Това време определя след колко милисекунди да се затворят всичките тези прозорци(близо 30). След като приключите със събмита на текущия уеб сайт и желаете да събмитнете друг слизате в долницата на страницата и виждате бутона: New Submit или просто натискате Back. Това е :)
Връзка към тулката- ТУК

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Почти всичко за числото седем

sevenУ много народи в древния свят числото 7 има особена символика. За египетските и вавилонските философи то представлявало сума от две жизнени числа 3 и 4: трима човека – баща, майка и дете -- са съставяли основата на живота, а четири било числото на посоките на света и посоката на вятъра, четирите възрасти на човешкия живот. Питагор отдавал голямо значение на числото седем като сума на числата 3 и 4: триъгълниците и четириъгълниците се считали през античността израз на завършеност и съвършенство. Седем още е числото на девствеността, на седемте дни от седмицата, на седемте тона от гамата, на седемте степени в науката.

Древните евреи починали числото седем. В Стария завет пише: „За шест дни създаде Господ небето и земята, морето и всичко в него, а на седмия ден почина”. Шабат е седмият ден за евреите. На седем хълма е основан Древен Рим. В християнството се говори за седем смърни гряха (гордост, алчност, похот, лакомия, гняв, мързел и завист) и седем тайнства (кръщение, миропомазване, причастие, свещенство, брак). Седем дни душата е около гроба. На седмия ден новороденото получава име. При мисюлманите мястото на висшето просвещение е седмото небе. Плеади в гръцката митология се нарича съзвездието от седем звезди. В приказките Синята брада има седем жени, Снежанка живее при седем джуджета и т.н.

С числото седем са свързани и най-известните паметници от античността, наричани Седемте чудеса на света. За първи път те са описани от финикийския писател Антипарт от Сидон през II век преди Хр.
Източник: mastilo.info

Интересни проекти за почивка:
1. Настоящ и развиващ- www.abox7.com-- Теглене на клипове от vbox7
2. Бъдещ- www.igri7.com-- Безплатни онлайн игри

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Личен Блог на Мартин Петров