განვითარების shits

ცოტა ხნის წინ მე გაუმკლავდეთ ძირითადად კოდი ნაცვლად ადმინისტრაციის, დრამები, რომლის წინაშეც ვდგავარ kodene გაცილებით მეტია, ვიდრე ასეთი სერვერზე, ამიტომ გადავწყვიტე scribbled რამდენიმე ხაზი სისულელეა, რომ ახერხებს. გაიზარდა ვამზადებთ მათი პროექტი, რომელიც იძულებული გახდა გახსნის ცოტა დრამატული ნაწილები

  • Първото нещо което което със сигурност щеше да създаде проблеми е изключването на javascript от браузърната поддръжка. Както всяка модерна апликация така и нашия инструмент използва доста JS за AJAX და სხვა დინამიური პროცესები, რომ გადაცემა interactivity და თანამედროვე ხედვა და გაუმჯობესების ფუნქციონალური. ჩვენ ბევრი ვიფიქრეთ მიღების ყველაზე მისაღები იყო ფუნთუშა ინფორმაცია და შემდეგ php გადაამოწმონ თუ არა ინფორმაცია სწორია და თუ ყველაფერი კარგად არის. საკმაოდ მცოდნე გადაწყვეტილება, მაგრამ საბოლოოდ, როგორც ჩანს, უფრო presentable ვერსია. HTML უნდა შეასრულოს თუ საქმე NoScript. მე ვფიქრობ, რომ ეს არის ყველაზე დახვეწილი გადაწყვეტა.
<noscript>
<meta http-equiv="refresh" content="0;URL=./nojs.html" />
</noscript>

ზოგადად, სიტუაცია არის ტრივიალური თუ ჩვენ აღარ JS მხარდაჭერა იქნება გადამისამართება nojs.html. მარტივი და ძალიან ეფექტური გადაწყვეტა

  • php multhithreading – ბევრი nishkovosta არის ის საკმაოდ სასარგებლოა პროცესორები უფრო core (არ არის, რომ ერთ-core არ არის OK მაგრამ ბევრი რამ ბირთვული სისტემები კიდევ ერთი ლუდი). ჩვენი პროგრამული უზრუნველყოფა აქვს ნაწილში, რომელიც ეხება ინფორმაციის მოპოვება სხვა API – ის და მე importva ჩვენს მონაცემთა ბაზაში Danny. Obshtovzeto გამოწვევა გარდა იმისა, რომ იგი მიხვდა, კვლავ multhithreading php in კლიმატის რეჟიმში, რადგან ეს პროცესი dosatachno დიდი და უნდა იყოს atomatiziran ვინმე, აუცილებელია, რომ ამას ხელით. აქ იყო დრამატული უკავშირდება fokrvaneto პროცესები და ნაკადი არა მხოლოდ შექმნა ბავშვის პროცესი-და დამწერლობის, რომელიც ელოდა priklyuchabota, რათა შეიქმნას ახალი. Silly რომ მოკლეს multiprocessing იდეა რა არის ქცევის და არა multhithreading მაგრამ ეს დეტალები. ყველაზე წამოაყენა & სასამართლო პროცესის შემდეგ, რაც იმას ნიშნავს, რომ გააგრძელონ მუშაობა script ჯერ არ ცვლილება ქცევა საჭირო და სტანდარტული გამოშვება სკრიპტი უნდა გადამისამართება – ჩემს შემთხვევაში, ისევე როგორც /dev / null 🙂 Накрая структурата на тази част от кода изглеждаше така
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
}else if ($pid) {
// we are the parent
echo "I'm parent  \n";
pcntl_wait($status); //Protect against Zombie children
} else {
// we are the child
echo "I'm a child $timer  \n";
exec("$command > /dev/null &");
exit (0);
}

Primerčeto ერთხელ ელექტრონული ტრივიალური. მდებარეობა შესრულება მე ძალიან დიდი შთაბეჭდილება მოახდინა interspersed შორის მოხსნას პროცესები და ასე მოიქცა შესახებ 50 ბავშვის პროცესი-a, რამაც მისი stranba 7800+ mysql ჩანართები შესახებ 30-40 sek. მანქანა არის ძალიან სუსტი, რადგან ჩვენ varar ტესტი ადრე განაცხადის ამაღლება რეალური.

  • Mysql querys – გამაოგნა დიდი სისულელე. იყო კოდი, რომელიც გააკეთა 4-5 ზედმეტი მოთხოვნა მონაცემთა ბაზაში, ნაცვლად გამოყენებით უფრო ნაყოფიერი sql შეკითხვის და შემდეგ მთავარი სამუშაო, რათა php-ის. დრამა იყო ასეთი, ყველაზე- напред се правеше една заявка която взимаше информация после изхода от заявката се използваше да се направят други заявки като тя служеше за аргументи. Доста грозна и тлъста ситуация. Subquery а е непозната територия явно както и left join или просто не са били обмисляни нещата добре. Хванах пренаписах заявката всичко се получи доста добре и като цяло натоварването падна с около 200% за същата част от кода.

В общи линии това са нещата на последък с които се заниамваме и немога да кажа че е скучно но понякога се изумявам от разни необмисляни парчета код които трябва да поправям а най стеращното е че често са мои 😆

გაუმჯობესებულია Zemanta

2 კომენტარები

  1. И аз имам тегления на данни, сложени в crontab-a. Пробвах преди със & в края, но ставаше пиково натоварване, грозна история. Сега съм ги оставил, като свърши единия процес, да пуска другия, но това е ужасТ :> Като зацикли някъде и всичко отива по дяволитетова го решавам като килвам старите процеси, като дойде време да се пуска новия, но това е още по-голям ужасТ, защото губя данни. Та ще се се опитам да имплементирам, твоето решене по този въпрос. Благодарско! 🙂

    1. Ами по моя метод хубавото е че информацията може да се обработва от няколко процеса едновременно но това също ти гарантира по голямо натоварване 😉 Баланса между натоварване и скорост винаги е много тънък. Всичко опира до тестове.

დატოვეთ პასუხი

თქვენი ელ-ფოსტა არ გამოქვეყნდება. აუცილებელი ველები მონიშნულია *

ანტი სპამი *