[PHP] Новичкам: задаем вопросы

Discussion in 'PHP' started by Kaimi, 7 May 2015.

  1. look2009

    look2009 Member

    Joined:
    3 Jun 2009
    Messages:
    80
    Likes Received:
    63
    Reputations:
    5
    Есть тонкий вопрос, 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], степень протечки зависит от колличества перезапущенных потоков, отсюдо вопрос как лучше убить объект. И сделать новую интерацию потока при завершении предыдущего.
     
    1. lambo

      lambo Member

      Joined:
      6 Feb 2019
      Messages:
      11
      Likes Received:
      5
      Reputations:
      0
      всем привет,подскажи с чего начать?раньше ставил,на бесплатные хостинги движки,чаты!но прошло более 10 лет)и не помню ничего)но как была эта тема интересна ,так она и осталась )
       
      1. firefighter777

        Joined:
        16 Jan 2019
        Messages:
        10
        Likes Received:
        6
        Reputations:
        0
        Главное научиться правильно задавать вопросы)))) С чего начать что? Ставить движки и чаты? Сейчас это можно делать из админпанелей многих хостеров вообще без заморочек. Если хочется развиваться как разработчик, то берем книжку по PHP для начинающих. А после освоения PHP идем осваивать какой нибудь фреймворк. К примеру Laravel.
         
        lambo likes this.
        1. lambo

          lambo Member

          Joined:
          6 Feb 2019
          Messages:
          11
          Likes Received:
          5
          Reputations:
          0
          спасибо,а можно ссылку на книгу,по которой уже обучались ?)
           
          1. firefighter777

            Joined:
            16 Jan 2019
            Messages:
            10
            Likes Received:
            6
            Reputations:
            0
            "PHP - Это просто программируем для веб сайта" Хорошая книга для старта
             
            lambo likes this.
            1. lambo

              lambo Member

              Joined:
              6 Feb 2019
              Messages:
              11
              Likes Received:
              5
              Reputations:
              0
              большое спасибо)
               
              1. Deathdreams

                Deathdreams Elder - Старейшина

                Joined:
                8 Nov 2008
                Messages:
                342
                Likes Received:
                116
                Reputations:
                5
                unset объекта гарантированно высвободит память при следующем запуске сборщика мусора. Другой вопрос, что приложенный кусок кода, если я верно понимаю, лежит в теле foreach и способен безмерно раздуть массив $pool, во всём в системе всегда должны быть лимиты, если хотите обеспечить отказоустойчивость.
                Используйте SplFixedArray($maxThreadsCount), пишите в ключ остаток от деления на $maxThreadsCount и память точно не утечёт.

                Вы понимаете, что foreach будет запускать потоки последовательно, а не параллельно?
                 
                look2009 likes this.
                1. Clocker

                  Clocker New Member

                  Joined:
                  3 Mar 2019
                  Messages:
                  11
                  Likes Received:
                  0
                  Reputations:
                  0
                  Привет мир, помоги понять, в php ещё только азы изучаю, задача такая, есть массив из алфавита каждая буква под своим ключем, есть переменная $string = "hello world";
                  Перебирая массив нужно выводить ключи символов из переменной $string. За меня код прошу не писать, подскажите примерно как должна выполняться работа скрипта?
                   
                  1. BillyBons

                    BillyBons Active Member

                    Joined:
                    1 Dec 2016
                    Messages:
                    220
                    Likes Received:
                    117
                    Reputations:
                    13
                    Эммммм ... распарсить посимвольно строку, выполнить поиск соответствия в массиве, вывести соответствующий ключ ? ;-)
                     
                    1. Clocker

                      Clocker New Member

                      Joined:
                      3 Mar 2019
                      Messages:
                      11
                      Likes Received:
                      0
                      Reputations:
                      0
                      Как сделать поиск?
                       
                      1. BillyBons

                        BillyBons Active Member

                        Joined:
                        1 Dec 2016
                        Messages:
                        220
                        Likes Received:
                        117
                        Reputations:
                        13
                        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.
                         
                        Clocker likes this.
                        1. Deathdreams

                          Deathdreams Elder - Старейшина

                          Joined:
                          8 Nov 2008
                          Messages:
                          342
                          Likes Received:
                          116
                          Reputations:
                          5
                          Если я всё верно понял и вам на выходе требуется ключ массива с алфавитом
                          PHP:
                          <?php

                          $string 
                          'hello world';
                          $alphabet = [1=>'a'2=>'b'];
                          $flipAlphabet array_flip($alphabet);

                          foreach(
                          str_split($string) as $symbol) {
                            echo 
                          $flipAlphabet[$symbol], " ";
                          }

                           
                          crlf and Clocker like this.
                          1. Clocker

                            Clocker New Member

                            Joined:
                            3 Mar 2019
                            Messages:
                            11
                            Likes Received:
                            0
                            Reputations:
                            0
                            Вот вроде, написал, вроде так должно быть, следующий шаг, буду разбираться как разбить значение переменной $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>";
                                }
                             
                            #313 Clocker, 3 Mar 2019
                            Last edited: 3 Mar 2019
                            1. crlf

                              crlf Green member

                              Joined:
                              18 Mar 2016
                              Messages:
                              684
                              Likes Received:
                              1,516
                              Reputations:
                              460
                              PHP:
                              for($i=0;$i<=strlen($name);$i++) print $alpha[$name[$i]]."\n";
                               
                              1. Clocker

                                Clocker New Member

                                Joined:
                                3 Mar 2019
                                Messages:
                                11
                                Likes Received:
                                0
                                Reputations:
                                0
                                Конструкцию
                                PHP:
                                print $alpha[$name[$i]]."\n";
                                правильно я понимаю, сравнение ключей и их вывод?
                                 
                                1. crlf

                                  crlf Green member

                                  Joined:
                                  18 Mar 2016
                                  Messages:
                                  684
                                  Likes Received:
                                  1,516
                                  Reputations:
                                  460
                                  Производится доступ к элементу массива
                                   
                                  1. Clocker

                                    Clocker New Member

                                    Joined:
                                    3 Mar 2019
                                    Messages:
                                    11
                                    Likes Received:
                                    0
                                    Reputations:
                                    0
                                    Так или иначе, функция написана, с данной проблемой вопрос закрыт, осталось только понять как reverse сообразить.
                                     
                                    1. crlf

                                      crlf Green member

                                      Joined:
                                      18 Mar 2016
                                      Messages:
                                      684
                                      Likes Received:
                                      1,516
                                      Reputations:
                                      460
                                      наговнокодить != изучить
                                      Не утверждаю, что мой пример идеален, но array_search избыточен для требуемой операции.
                                       
                                      1. Clocker

                                        Clocker New Member

                                        Joined:
                                        3 Mar 2019
                                        Messages:
                                        11
                                        Likes Received:
                                        0
                                        Reputations:
                                        0
                                        Я и не говорю что это в реализацию, говно код никто не любит, это черновик, для понимания принципа работы программы. Там по сути ещё много чего нужно разобрать это только малая часть.
                                         
                                        1. mail156

                                          mail156 Banned

                                          Joined:
                                          28 Sep 2018
                                          Messages:
                                          464
                                          Likes Received:
                                          357
                                          Reputations:
                                          0
                                          Clocker,
                                          вместо printf, лучше использовать echo.