День седьмой. Детектив

Вчера поиском проектов на www.getafreelancer.com не занимался, так как делал уже упоминавшийся проект: http://www.getafreelancer.com/projects/kit1980_192707.html. А SEO-проект за $20 заказчик отменил; ну и ладно, к работе я не приступал.

Так вот, по проекту http://www.getafreelancer.com/projects/kit1980_192707.html. Вчера на работу потратил 3 часа 15 минут, уже большую часть проекта выполнил. Осталось решить одну проблему, наверное, самую сложную, я еще не знаю, как. Там на сайте пользователь загружает видео, которое конвертируется на сервере в .flv формат. Сейчас пользователь должен дожидаться окончания процесса конвертации, а нужно сделать так, чтобы конвертация осуществлялась как бы в фоне, а пользователю после окончания процесса высылался e-mail. Не знаю, в каком файле нужно вызывать функцию конвертации, чтобы пользователь не ждал. Может по cron? Если кто понял и может помочь, подскажите, пожалуйста.

Ну а теперь самое интересное. Оказывается, заказчик, для которого я выполняю этот проект, сам является фрилансером и выиграл этот проект (за $160) на другом сайте, а потом как бы перепоручил мне (за $90 + обещает премию $25).  Настоящий заказчик увидел этот проект на www.getafreelancer.com и связался со мной. Предоставил доказательства, что он оригинальный заказчик (поменял пароль на доступ к серверу + дал ссылку на оригинальный проект) и предлагает работать с ним напрямую, за $150.

Я хочу быть  уверенным, что получу деньги за этот проект. Поэтому не спешу отменять проект за $90. Если новый заказчик создаст проект, выберет меня победителем и переведет escrow, тогда проект на $90 я отменю. Если нет - буду делать проект за $90 (плюс обещанная премия). Особо чего-то нечестного со стороны промежуточного заказчика я не вижу, он просто выступает как бы посредником, и, в принципе, не обязан мне говорить, что проект не для него лично.

На сегодня все. Буду держать вас в курсе.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Комментариев: 43

  1. aodfess пишет:

    Хм, занятно весьма, с этим посредничеством. А насколько частая эта практика? Ведь всегда к общей выгоде сотрудничать без посредников напрямую - заказчик платит меньше, чем посредникам, вы получаете больше от заказчика. Такая себе “золотая середина”. В таком случае при получение любого заказа нет ли смысла поискать, а не даст ли кто-нибудь за тот же проект больше денег? :)

  2. Kit пишет:

    aodfess, думаю, нечастая, так как все на виду, хотя точно не знаю.
    В данном случае настоящий заказчик вообще считает посредника практически мошенником.

  3. eyeweb пишет:

    Может вам получится с обоих срубить :)

  4. Kit пишет:

    eyeweb, в принципе, могло бы и получиться. Но не буду, некрасиво.

  5. Andy пишет:

    По поводу фоновой конвертации — есть опыт реализации, именно конвертации и именно медиафайлов; могу поделиться.

  6. Kit пишет:

    Andy, был бы очень рад, хотя бы в общих чертах.
    Я просто не знаю, как заставить выполняться функцию в php, чтобы для продолжения не требовалось дожидаться окончания работы функции.
    А сегодня желательно сдать проект :(

    Может там просто все, а я опять туплю?

  7. scriptslab пишет:

    С сайта http://otvety.google.ru/otvety/thread?tid=672889f85f9af61d

    Можно просто запустить отдельный интерпретатор PHP, который и будет отправлять письмо(а) в то время как основной интерпретатор PHP продолжит работу. Делается это очень просто:

    array(”pipe”, “r”),
    1 => array(”pipe”, “w”),
    2 => array(”file”, “scripterrors.log”, “a”) // В качестве потока ошибок выбираем файл
    );

    // Массив с переменными, которые будут переданы скрипту
    $env = array(”mail” => “some@email.ru”,
    “title” => “someTitle”,
    “data” => “anyData”);

    // Запускаем скрипт в фоновом режиме
    $p = proc_open(’C:/PHP/php.exe sendmail.php’, $desc, $pipes, dirname(__FILE__), $env);

    // Работаем дальше не ожидая окончания работы запущенного процесса

    ?>

    Соответственно в sendmail.php пишем скрипт отправки почты, а переданные переменные будут доступны в супер глобальном массиве $_ENV

    Только надо иметь ввиду, что каждый новый интерпретатор “съедает” примерно 8 мб памяти пока запущен. Точное количество памяти зависит от версии PHP и загруженных расширений.

    Но если на хостинге отключен вызов функции proc_open то нужно думать что-нибудь еще.

  8. Alex пишет:

    >>Andy, был бы очень рад, хотя бы в общих чертах.
    >>Я просто не знаю, как заставить выполняться функцию в php, >>чтобы для продолжения не требовалось дожидаться окончания >>работы функции.
    Вариант решения прост - со стороны клента запустить скрипт. Я бы аяксом сделал. Коннектиш jquery.js и делаеш чот в стиле $.get(’http://yoursite.com/fuckingscript.php’,{video:lol.flv});
    Как результат - скрипт отработает асинхронно, ноу проблемс :)

  9. scriptslab пишет:

    Как вариант можно новый процесс запустит во фрейме и отключить user_break .. т.е. чтоб клиент не мог прервать процесс даже после закрытия браузера

  10. Kit пишет:

    Alex, scriptslab, спасибо огромное. Попробую и так, и так.

  11. Alex пишет:

    http://kr2.php.net/manual/en/function.ignore-user-abort.php

  12. scriptslab пишет:

    Alex, точно. навскидку вспомнил просто =) название переврал функции.
    Аджакс это хорошо, но если JavaScript будет отключена но неотработает ^_^

  13. uzver пишет:

    хм а в пхп вообще чтоли нету делегатов? и асинхронных вызовов функции?

  14. nullwaver пишет:

    Я по крону раз в 15 минут запускаю perl’овый скрипт, который смотрит в директорию на предмет наличия файлов к конвертации. Конвертирует их по очереди, перекладывает в другую директорию.

  15. Kit пишет:

    scriptslab, там с отключенным JavaScript сайт вообще нефункционален будет. Типа Web2.0 :-) Так что решение с ajax подходит.

  16. Alex пишет:

    2uzver: http://kr2.php.net/manual/en/function.pcntl-fork.php возможно это

  17. ichik пишет:

    В российском фрилансе практика посредничества скорее правило чем исключение.

  18. uzver пишет:

    ну так написать функцию конверта и отслыки мейла, и вызывать ее асинхронно

  19. Сергей Корнилов пишет:

    Можно вызывать PHP из командной строки асинхронно как здесь: http://robert.accettura.com/archives/2006/09/14/asynchronous-processing-with-php/

    Но аяксом конечно правильнее будет.

  20. anycolor пишет:

    ichik, я бы сделал уточнение:

    Практика грязного посредничества - очень распространена в российском фрилансе.

    Защита от таких посредников - предоплата или работа через аналогичные escrow сервисы.

  21. Абсурдный Людь пишет:

    Интересно наблюдать за дискуссиями прогеров :Ы
    А если по теме - по-моему, выгоднее занимаца посреднечеством.. ыы тоже сделать блог и публиковать результаты… небыло мыслей? :)

  22. boom пишет:

    anycolor это защита от абсолютного кидалова, а чтобы защитится от подобного посредничества, надо пользотся поиском и просматривать много фрилансовских сайтов

  23. anycolor пишет:

    boom, об этом я тоже писал уже в своем блоге, как один из пунктов проверки заказчика на “вшивость” - www.malkin.com.ua/2007/11/01/freelance-kak-proverit-zakazchika-na-vshivost/ - в пункте н.5

  24. Jay пишет:

    Я могу сказать, что в 80% случаев работа на ГАФе идет с посредниками, а порой через несколько рук. Заказы обычно набирают через сайты посильнее(например еланс.ком) или через виртуальные студии дизайна. В лучшем случае идет перепродажа части проекта, например если программер взял проект целиком, а отдает работу по дизайну дизайнерам.

  25. ДенЗнак пишет:

    Оху уж эти перекупы-барыги)))

  26. anycolor пишет:

    Jay, на самом деле в этом нет ничего плохого (в работе с посредниками) - кроме того, что работу нельзя положить в портфолио (обычная практика посредников - выдавать работы, отданные в субподряд - за свои). Однако этот вопрос решается просто - наценкой стоимости работы на 20-30% (я обычно даю наценку 20%). Если посредник чист - он доплатит, если нет - просто уйдет.

  27. cyberloh пишет:

    а я вот все думаю о выводе денег. почитал давеча о том, что можно заказать кредитку на ГАФе. вроде как красивая фича, но терзают смутные сомнения… ведь оформлением этих карт занимаются посторонние люди за океаном. как вы думаете, достаточно ли гарантий от того, что потом кто-то располагающий информацией не будет мутить деньги с них в более или менее наглом темпе? я, честно говоря не имею опыта обращения с кредитками, поэтому извините если вопрос глупый )

  28. dev пишет:

    Всеже мне кажется что через крон это было бы более граматно, хотябы потому что интерплетатору cli можно отдельно настроить лимиты памяти и времени исполнения. Если скрипт который конвертирует на php. И не занималь процессы которые будут использоватся для посещения самого сайта.

  29. Vladimir Rusinov пишет:

    Я бы в пользовательском скрипте добалял задания в какую-нибудь очередь (таблицу в бд), а отдельный фоновый процесс читал бы эту очередь каждые N секунд, конвертировал файлы (если есть в очереди) и отсылал письма.

  30. Димка пишет:

    Ну, откровенно говоря… маловато за неделю работы. Если бы эта работа была основная - прожить было бы нереально.

  31. scriptslab пишет:

    Vladimir Rusinov, отличная одея.
    Только N секунд получится только на выделенном сервере.
    На обычном хостинге чаще раза в минуту не получится.

    А так отличная идея. Вести в базе очередь. Там же и контактные данные о оповещении клиента.

    А крон и в той же сипанели настроить можно.
    /usr/bin/php путь_к_скрипту_для_конвертации.php

  32. Kit пишет:

    Димка, у меня на escrow еще $140, просто я их еще не счет получил, поэтому не написал в таблицу. Сегодня скорее всего эти деньги будут у меня нас счету.

  33. Santa Claus rpm пишет:

    ignore_user_abort(TRUE); // не прекращать процесс, даже если юзер закрыл браузер

  34. Денис Болтиков пишет:

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

  35. Денис Болтиков пишет:

    А… прочитал комменты, не я один это советую :)

  36. Константин пишет:

    Поддерживаю вариант с cron’ом, послушайте nullwaver и dev! Почаще заданее поставте, в худшем случае будет холостая проверка наличия файлов раз в 1-2 минуты, никакой нагрузки на сервер, и скрипт написать легче, для вас самое то!

  37. Kit пишет:

    Спасибо всем комментаторам за советы! :-)
    Но оказалось, что конвертация происходит очень быстро, а основное время занимает закачка файла, просто был неправильно построен процесс взаимодействия с пользователем.

    Я изменил процесс закачки, и описанная мною задача просто отпала :-)

  38. Jay пишет:

    cyberloh, не мучайся в сомнениях, занимается этими картами солидная компания пейонер. Карты, говорят, у них отличные.

    anycolor, смотря с какой стороны поглядеть. для изначальных заказчиков очень решает качество, а для перекупщиков, цена.

    Димка, я могу тебе сказать, что работая на гафе по 6 — 10 часов, можно зарабатывать около 1.5 к в месяц, секрет очень прост, нужно быть вежливым и не борзеть с ценой, ну и уровень ваш решает. После этого появляются постоянные заказчики, которые готовы платить от 8 до 15 баксов за час твоей работы. Правда это очень утомляет это минус, но есть возможность поднять денег, это плюс :)

  39. cyberloh пишет:

    Jay, в сутки или в месяц? )

  40. Jay пишет:

    не понял вопроса )

  41. cyberloh пишет:

    10 часов работы в сутки? это много.

  42. alexey пишет:

    А на каком сайте заказчик создавал тендер в первый раз? :)

    По поводу задачки - с кроном, наверное, сделать лучше всего. Это надежно и есть возможность по почте получать уведомления об ошибках.

  43. Kit пишет:

    alexey, на elance.

Оставьте свой отзыв!


Rambler's Top100