puścić coś w tle

Chcę móc uruchomić proces w tle za pomocą przeglądarki. Docelowo wszystko będzie działać na linkuksie, ale do testów przydałoby się to mieć u siebie. W linkuksie wiem.

costam &

uruchamia proces w tle, potem fajnie mogę sobie zarządzać

jobs

. Ale ja chcę w Windows. Windows Vista, żeby nie było niedomówień. Wywołanie komendy przez exec działa, ale czeka na zakończenie, a nie o to chodzi. Proces ma działać długo, a ja tylko chcę monitorować jego stan, a nie zamulać Firefoksa.

exec("start /b c:/sciezka_do_php/php.exe C:/sciezka_do_skryptu_procesu/bgproces.php > test.txt");

Próbowałem też uruchomić jakiś batch (costam.bat), który z kolei miałby uruchomić skrypt PHP, ale to też nie zadziałało - cały czas przeglądarka czekała na zakończenie całego procesu. Rozwiązanie jest takie, że w PHP na Windows trzeba użyć klasy COM, czyli windowsowych mechanizmów OLE (Object Linking and Embedding). Wygląda to tak:

< ?php
/*
 * skrypt do uruchomienia w tle skryptTla.php
 */
$fname = 'c:/log.html'; 
for($i=0; $i&lt;10; $i++){
	sleep(1);
	file_put_contents($fname, date('H:i:s') . '<br/>', FILE_APPEND);
}
file_put_contents($fname, '<hr />', FILE_APPEND);
?>
< ?php
/**
 * skrypt widziany przez przeglądarkę
 */
echo "uruchamiam " . date('H:i:s ');
 
  if(isset($_SERVER['PWD']))
  {
  	// $cmd = '....';
    $nullResult = "php $cmd > /dev/null &";
  }else{
    $cmd = 'sciezka_do_php/php.exe sciezkaSkryptuDoUruchomieniaWTle/skryptTla.php';
    $ws = new COM("WScript.Shell");
    $oExec = $ws->Run($cmd, 0, false);
  }
 
echo " koniec " . date('H:i:s ');
echo " OK ";
 
 
?>

jak sprytnie zamienić & na & amp;?

Zdarza się, że w tekstach jakie przygotowujemy do wyświetlania na stronach WWW część tzw. entycji jest już zakodowana poprawnie, a część nie. Mnie zdarzyło się tak ze znaczkiem &, który normalnie powinien w XMLu i XHTMLu być kodowany jako &amp; Niektóre ampersandy były zakodowane, ale większość pozostała w formie “wizualnej”, czyli jednego znaku. Parser XMLa tego nie lubi. Ja nie lubię dłubania. Lubię za to wyrażenia regularne, więc takim oto krótkim poleceniem zamieniam wszystkie nieprawidłowo zakodowane ‘&’ na prawidłowe ‘&amp;’, pozostawiając bez zmian te dobrze zapisane:

$tekst = preg_replace('/&(?!amp;)/', '&amp;', $tekst);

W wyrażeniu regularnym użyłem przewidywania czyli poprosiłem o takie pasujące fragmenty, po których nie następuje ciąg “amp;”. Proste.

Przy okazji okazało się, że wordpress ma problem z zapisaniem &amp; w tytule posta… :)

Nikita Chickita

A także Electric, Etnies, Les Ettes, Nixon, Rusty, Sheroll, Vans, Vestal i inne… Właśnie przechodzę szybką edukację w dziedzinie marek odzieżowych dla nastolatek, a to dzięki sklepowi chickitashop.com, który pomagam ustawić w odpowiednim miejscu internetu :) Prowadzi go moja Kuzynka, więc pewni politycy nazwaliby to układem. Ale fajnie jest zająć się zupełnie inną branżą i poobserwować — całkiem imponujący — ruch na stronie.

Strona główna sklepu z odzieżą dla nastolatek, chickitashop.com

Strona główna sklepu z odzieżą dla nastolatek, chickitashop.com

W tej chwili sklep bazuje na opensourcowym oscGold, czyli polskiej adaptacji osCommerce. Jednak pomimo że to ogromny projekt i faktycznie pozwala dość prostymi środkami uruchomić i prowadzić sprzedaż, to czytelność kodu i jego styl przypominają mi własne produkty… sprzed pięciu lat. Domyślam się, że refaktoryzacja tak dużego przedsięwzięcia to niełatwa rzecz i pewnie dlatego pełno tu stałych i zmiennych globalnych, dziesiątek ‘includowanych’ plików, mieszania layoutu i logiki. Kusi, żeby zrobić wszystko od nowa…

Kod jednej z podstron

Kod jednej z podstron

Next Page »