evoluado diareon

Ĵus mi trakti ĉefe kun kodo anstataŭ la administrado tiel dramoj antaux kiu mi staras kun kodene estas multe pli ol tia servilo, tial mi decidis haste kelkajn liniojn de sensencaĵo kiu sukcesas krei. Helpata preparas por prezenti sian projekton kiu devigis la malfermon de iom dramaj partoj

  • Първото нещо което което със сигурност щеше да създаде проблеми е изключването на javascript от браузърната поддръжка. Както всяка модерна апликация така и нашия инструмент използва доста JS за AJAX kaj aliaj dinamikaj procezoj kiuj transdonas interactividad kaj nuntempa vizio kaj plibonigi la funcionalidad. Ni multe pensis pri faranta la plej akceptebla estis kun kuketo informon kaj poste php kontroli ĉu la informo estas valida kaj se ĉio bonas. Tre klera decido sed fine aperas pli presentable versio. HTML esti ludita se temas en noscript. Mi kredas ke estas la plej eleganta solvo.
<noscript>
<meta http-equiv="refresh" content="0;URL=./nojs.html" />
</noscript>

Ĝenerale la situacio estas bagatela se ni haltas JS apogo estos redirigido al nojs.html. Simpla kaj tre efika solvo

  • php multhithreading – multaj nishkovosta estas iu sufiĉe utila por procesoroj kun pli kerna (ne tiu de la ununura-kerna ne OK sed multaj aferoj nukleaj sistemoj estas alia biero). Nia programaro havas parton kiu traktas kolektanta informon de aliaj API – ŝi kaj mi importva en nia datumbazo Danny. Obshtovzeto neniu defio krom ke ĝi realigis denove kun multhithreading php en CLI modon ĉar tiu procezo estas dosatachno grandaj kaj devas esti atomatiziran al iu estas imperativo fari ĝin mane. Tie estis dramo asociita kun fokrvaneto procezoj kaj fluo ne nur krei infano procezo-kaj skripto kiu atendis al priklyuchabota krei novan. Stulta kiu mortigis multiprocesamiento ideon de kio estas fakte konduto kaj ne multhithreading sed tiuj estas detaloj. Plej antaŭenigataj & post la juĝo kiu signifas daŭrigi ilian laboron skripto ankoraŭ neniu ŝanĝo en konduto postulita kaj norma eligo de la skripto estos nomumata – en mia kazo ankaŭ al /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 denove e banalaj. От към производителност бях силно впечетлен със прекъсвани между вдигането на процесите и прочие направих около 50 child process-a които своя странба направиха 7800+ mysql inserts за около 30-40 сек. А машината е крайно хилава понеже ни е тестов върър преди да вдигнем приложението на реалния.

  • Mysql querysбях шокиран от една велика глупост. Имаше един код който правеше 4-5 излишни заявки към базата данни, вместо да се използва едно по тлъсто sql query и после основната работа да я отнесе php-то. Драмата беше такава, plej- unua petis ke informo tiam prenis la rezulto de la apliko uzas por fari aliajn petojn utilis kiel argumentoj. Bela malbela kaj graso situacio. Subquery sed ŝajne nekonataj teritorio kaj maldekstra aliĝi aŭ simple ne estis kontemplita aferojn bone. Kaptis peto reverkis ĉio estis sufiĉe malvarma kaj la tuta ŝarĝo falis de sur 200% por la sama peco de kodo.

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

Plibonigita per Zemanta

2 komentoj

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

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

Lasi Respondon

Via # retpo? to adreso ne estos eldonita. Bezonata kampoj estas markitaj *

Anti SPAMO *