1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Занятие №1

Discussion in 'Подготовка' started by SpartakuS, Mar 14, 2011.

  1. SpartakuS Thread starter User


    Offline
    • Знаменитый
    Message Count:
    797
    Likes Received:
    82
    Тема: Введение в PHP
    Цель: Понять общие принципы работы пхп, глянуть на синтаксис.
    Материал:
    http://php.su/learnphp/?syntax
    http://php.su/learnphp/cs/

    http://pear.php.net/manual/ru/standards.php
    http://symfony.com/doc/2.0/contributing/code/standards.html

    Подготовка:
    PHP:
    <?php
        
    /**
        * spartakus aka vaseninm for prodomainer.ru
        */
        
    $alph 'y'// буква, которой не должно быть
        
    $path 'path/file/'// заканчивается на слеш
        
    $file "domains.txt"// файл
        
    $domains file($path $file);
        foreach (
    $domains as $domain) {
            if (
    stripos($domain$alph) === false) {
                
    $domain_without[] = $domain;
            } else {
                
    $domain_with[] = $domain;
            }
        }
        
    file_put_contents($path 'domains_with_' $alph '.txt'implode("\n"$domain_with));
        
    file_put_contents($path 'domains_without_' $alph '.txt'implode("\n"$domain_without));
    Это код, который список доменов из файла (каждый на новой строчке) делит на домены содержащие какую то букву и не содержащие.
    Очень быстро "на коленке". Для юзера L-X, кстати. Мог что то не учесть. Вам нужно его разобрать. Что к чему относится, что и почему тут. Вы должны понять предназначение каждого символа. Вопросы в этой теме задаем, не стесняемся.
    Установка:
    Денвером все умеют пользоваться? Заливаем в папку скрипт. В эту же заливаем список с доменами (во вложении) и запускаем скрипт. 777 права на папку, если у вас линукс.
    а) Создайте отдельный файл для настроек. (http://php.su/learnphp/cs/?ic)
    б) Сделайте отправьте имена domains_with и domains_without в настройки.
    в) сделайте счетчик. Сколько с буквой и сколько без. И выводите результат на экран. напомню, что выводим с помощью echo )
    г) Найдите недостатки у скрипта (к примеру регистрозависимость - чем не недостаток?).

    Вроде все. Задавайте вопросы, не стесняйтесь. Наше с вами общение это очень важно. Ну мне так кажется.
    PS Я еще никогда никого не учил, поэтому немного тяжело)

    Attached Files:

  2. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Пока результат такой:
    Думаем, читаем.
  3. mafiarus User


    Offline
    • Знаменитый
    Message Count:
    305
    Likes Received:
    71
    У меня такой
    Code:
    Warning: implode() [function.implode]: Invalid arguments passed in /var/www/h0544/data/www/mafiarus.host-yes.ru/index.php on line 17
    Сижу думаю =)
  4. SpartakuS Thread starter User


    Offline
    • Знаменитый
    Message Count:
    797
    Likes Received:
    82
    Gooos, ошибок много начинаем анализировать.
    1) file(path/domains.txt) [function.file]: failed to open stream
    файла с доменами не существует. В твоем случае он будет располагаться по Z:\home\lesson.ru\www\path/domains.txt
    С настройками стоит поиграться:
    PHP:
        $path 'path/file/'// заканчивается на слеш
        
    $file "domains.txt"// файл
    2)Warning: Invalid argument supplied for foreach()
    Warning: implode() Invalid arguments passed
    file() который у нас не получился в первом варнинге должен вернуть массив, который нужен для обработки фоичем. Массив не возвращется, следовательно цикл не производится, следовательно массивов, которые приходят в имплод не существует.
    3) file_put_contents(path/domains_without_y.txt)
    аналогично первому пункту
    ИТОГ:
    Нужно исправить путь и имя файла, что бы все заработало.
    НО:
    Какой то из массивов может быть пустой, потому, что нету доменов с такой буквой или без такой буквы. Поэтому, нужно перед цилом сделать переменные $domain_without и $domain_with массивами.
    PHP:
    $domain_without = array();
    $domain_with = array();


    ---------- Сообщение добавлено в 08:18 ---------- Предыдущее сообщение было в 08:00 ----------

    implode() [function.implode]: Invalid arguments passed на 17 строчки.
    Ошибка одна, рассказать как разобраться проще. Итак, что мы знаем. 17ая строка.
    PHP:
    file_put_contents($path 'domains_without_' $alph '.txt'implode("\n"$domain_without));
    Неправильные аргументы для имплода. Имплод у нас:
    PHP:
    implode("\n"$domain_without)
    Почитаем про имплод на пхп.су.
    http://www.php.su/functions/?implode
    Что это нам дает. Возвращет функция string, первый аргумент string, второй array.
    Нам полезна информация об аргументах. Ведь ошибка именно в них.
    Первый "\n" явно текстовый, то есть стринг, то есть правильный. Второй переменная. Тип переменной и его содержание можно легко узнать функцией var_dump()
    PHP:

    echo '<pre>'//Это для того, чтобы было сохранено форматирование, которое возвращет пхп
    var_dump($domain_without);
    echo 
    '</pre>';
    Скорее всего вместо массива выдаст NULL
    Значит не задали. А где мы задавали?
    PHP:
            if (stripos($domain$alph) === 0) {
                
    $domain_without[] = $domain;
            } else {
    Это значит, что функция под ифом всегда false у тебя. Определеяет есть ли в строчке буква y. Ан не, нифига) Это я ошибся, когда скрипт писал, а юзер L-X умудрился не заметить. Функция определяет является ли буква первой. Надо поменять 0 на false. Скрипт в шапке обновил.

    ---------- Сообщение добавлено в 10:19 ---------- Предыдущее сообщение было в 08:18 ----------

    И еще вопрос из ЛС.
    Мне сейча чуть более, чем 99% ваших вопросов будут казаться глупыми, потому, что я на все эти вопросы отвечал для себя в 2007. А вам это предстоит сделать с моей помощью.
    Per aspera ad astra.
  5. nikolas25 Novice member


    Offline
    Message Count:
    21
    Likes Received:
    0
    Доброго времени суток! Немного не понял этого задания - "б) Сделайте отправьте имена domains_with и domains_without в настройки." Результат должен туда отправиться или что?
  6. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
  7. nikolas25 Novice member


    Offline
    Message Count:
    21
    Likes Received:
    0
    на папку
  8. Praktik User


    Offline
    Message Count:
    2
    Likes Received:
    0
    Я получаю такие ошибки:

  9. Gooos абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Я уж и так:

    $path = 'Z:/home/lesson.ru/www/file/';

    :stena:

    Теперь списков доменов нет и никаких ошибок не пишет:

    Attached Files:

  10. nikolas25 Novice member


    Offline
    Message Count:
    21
    Likes Received:
    0
    Создай в корне папки /www папку /path, а в ней папку /file и помести в неё domains.txt или переназнач адрес к файлу в переменной $path

Share This Page

All rights reserved SocEngine.ru ©