Есть тонкий вопрос, unset ключей массива как я понял отедает память, а вот теперь вопрос следующий unset для объектов и переменных действует одинаково? Т.е. $pool[$j] = new IndexThread($data); $pool[$j]->start(); //ждём пока поток завершится sleep(30); unset($pool[$j]); и $a = 2; unset($a); Равносильны или обект оставляет свои следы в памяти. Спрашиваю т.к. при контроле потоков создаю новый поток в умерший $pool[$j], делать unset ключа массива накладно по памяти, но по немногу течёт при создании потока $pool[$j] в умерший $pool[$j], степень протечки зависит от колличества перезапущенных потоков, отсюдо вопрос как лучше убить объект. И сделать новую интерацию потока при завершении предыдущего.
всем привет,подскажи с чего начать?раньше ставил,на бесплатные хостинги движки,чаты!но прошло более 10 лет)и не помню ничего)но как была эта тема интересна ,так она и осталась )
Главное научиться правильно задавать вопросы)))) С чего начать что? Ставить движки и чаты? Сейчас это можно делать из админпанелей многих хостеров вообще без заморочек. Если хочется развиваться как разработчик, то берем книжку по PHP для начинающих. А после освоения PHP идем осваивать какой нибудь фреймворк. К примеру Laravel.
unset объекта гарантированно высвободит память при следующем запуске сборщика мусора. Другой вопрос, что приложенный кусок кода, если я верно понимаю, лежит в теле foreach и способен безмерно раздуть массив $pool, во всём в системе всегда должны быть лимиты, если хотите обеспечить отказоустойчивость. Используйте SplFixedArray($maxThreadsCount), пишите в ключ остаток от деления на $maxThreadsCount и память точно не утечёт. Вы понимаете, что foreach будет запускать потоки последовательно, а не параллельно?
Привет мир, помоги понять, в php ещё только азы изучаю, задача такая, есть массив из алфавита каждая буква под своим ключем, есть переменная $string = "hello world"; Перебирая массив нужно выводить ключи символов из переменной $string. За меня код прошу не писать, подскажите примерно как должна выполняться работа скрипта?
Эммммм ... распарсить посимвольно строку, выполнить поиск соответствия в массиве, вывести соответствующий ключ ? ;-)
https://secure.php.net/manual/en/function.array-search.php Return Values Returns the key for needle if it is found in the array, FALSE otherwise. If needle is found in haystack more than once, the first matching key is returned. To return the keys for all matching values, use array_keys() with the optional search_value parameter instead.
Если я всё верно понял и вам на выходе требуется ключ массива с алфавитом PHP: <?php$string = 'hello world';$alphabet = [1=>'a', 2=>'b'];$flipAlphabet = array_flip($alphabet);foreach(str_split($string) as $symbol) { echo $flipAlphabet[$symbol], " ";}
Вот вроде, написал, вроде так должно быть, следующий шаг, буду разбираться как разбить значение переменной $name на массив без пробелов т.е. должно быть так $name = "дарквеб"; PHP: $alfavit = "а б в г д е ё ж з и й к л м н о п р с т у ф х ч ш щ ь ы ъ э ю я";$ex_alfa = explode(" ", $alfavit); $name = "д а р к в е б"; $name_res = explode(" ", $name); for($i=0; $i<=count($name_res); $i++){ echo array_search($name_res[$i], $ex_alfa); } На кириллице работает как надо. Всем спасибо!!! PHP: $alfavit = "ABCDEFGHIKLMNOPQRSTVWXYZ";$ex_alfa = str_split($alfavit); $name = "DARKWEB"; $name_res = str_split($name); for($i=0; $i<=count($name_res); $i++){ $res = array_search($name_res[$i], $ex_alfa); echo $res."<br>"; }
Так или иначе, функция написана, с данной проблемой вопрос закрыт, осталось только понять как reverse сообразить.
наговнокодить != изучить Не утверждаю, что мой пример идеален, но array_search избыточен для требуемой операции.
Я и не говорю что это в реализацию, говно код никто не любит, это черновик, для понимания принципа работы программы. Там по сути ещё много чего нужно разобрать это только малая часть.