Warning: Trying to access array offset on value of type bool in /home/leaprod/public_html/forums/mods/bbcode/api.php on line 1292

Warning: Trying to access array offset on value of type bool in /home/leaprod/public_html/forums/mods/bbcode/api.php on line 1292

Warning: Trying to access array offset on value of type bool in /home/leaprod/public_html/forums/mods/bbcode/api.php on line 1292
Léa-Linux : « optimisation de boucle linux »
Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
optimisation de boucle linux
Envoyé par: szambaux

bonjour, je dois créer un script qui test l'éxistance de fichier en continu donc j'ai fait une boucle infini et les test avec des if ca donne cela

#! /bin/sh
sleep 5
#effacement des fichiers
rm  /var/www/connect.php
rm /var/www/absence.php
i=menu
j=menu
# boucle infinie
while (true) 
do
case $i in
	menu)
if test ! -e /var/www/connect.php && test ! -e /var/www/absence.php
then

killall -9 flashplayer
sleep 2
flashplayer [] &
#sleep 1
i=appel
j=absence
fi
;;

	appel)

if test -e /var/www/connect.php  
then
killall -9 flashplayer
sleep 2
flashplayer [] &
i=menu
j=absence
fi
;;
esac
if test $j= absence
then
if test ! -e /var/www/connect.php &&  test -e /var/www/absence.php
then
killall -9 flashplayer
sleep 2
flashplayer [] &
j=menu
fi
fi

done

Le probleme c'est que c'ette facon de faire et beaucoup trop gourmande ce script utilise 60% du proc, je suis débutant en shell script, mon programme doit tout simplement faire ceci

flashplayer absence.php connect.php
Appmenu.swf 0 0
Appdecroche.swf indiférent 1
indiférent mais si absence.php 1 prochaine page affiché Appabsence.swf
Appabsence.swf 1 0



voila j'espere que j'ai était a peu prés clair sinon n'hésitait pas merci

Poste le Tuesday 9 October 2007 16:39:01
Répondre     Citer    
Re: optimisation de boucle linux

Citation
szambaux
bonjour, je dois créer un script qui test l'existence de fichier en continu

C'est une mauvaise idée en général. Sous Posix, on ne peut pas s'apercevoir de la création d'un fichier (sauf avec inotify qui est un linuxisme peu utilisé).
Que cherches tu à réaliser pour de vrai?

Mais tu pourrais commencer ta boucle while par un petit dodo
sleep 0.4

J'ai l'impression que lorsque les fichiers n'existent pas ta boucle tourne indéfiniment.


----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 9 October 2007 17:46:18
Répondre     Citer    
Re: optimisation de boucle linux

Au fait, le killall -9 est une mauvaise idée, il faut d'abord envoyer le signal SIGTERM, puis SIGQUIT et seulement (un peu plus tard) en désespoir de cause SIGKILL. Autrement, l'application terminée n'a pas l'occasion de finir proprement.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 9 October 2007 18:13:10
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

Je vous remercie,en fait c'est trés simple, d'un coté j'ai un client qui se connecte sur un site web quand il clique sur un bouton un script php créer un fichier connect ou absence dans lequel il y a toute les informations sur le client qui a cliqué, de lotre coté j'ai une appliance sous linux qui est une borne intéractive cette borne affiche des animations flash qui different en fonction de l'éxistance des fichier et du contenu des fichiers

Poste le Tuesday 9 October 2007 19:51:37
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

en fait si il y avait un moyen pour que lorsque le client clique sur ce bouton cela ouvre une animation flash sur le serveur cela serais parait mais j'ai pas trouvé de meilleur technique que de créer un fichier et de tester si il éxiste, je suis néanmoins ouvert à d'autre solutions merci

Poste le Tuesday 9 October 2007 19:53:50
Répondre     Citer    
Re: optimisation de boucle linux

Pourquoi ne pas coder des trucs en PHP (notamment avec des pipes)?

Citation
szambaux
en fait si il y avait un moyen pour que lorsque le client clique sur ce bouton cela ouvre une animation flash sur le serveur

J'ai beaucoup de mal à suivre là, et j'ai l'intuition d'une incompréhension des mécanismes flash (que je connais mal car ils sont propriétaires).

Le code flash tourne, me semble-t-il, tout comme le code Javascript, sur les machines clientes, celles où s'exécutent les navigateurs comme Firefox ou IE.

Alors j'ai du mal à imaginer un code flash qui tourne sur un serveur. En général, les serveurs n'ont ni écran, ni clavier, ni navigateur.

Il faudrait prendre le temps d'expliquer plus en détail, en nommant (ne serait-ce que fictivement) les machines et en précisant quels programmes et quels protocoles (et de quel coté, notamment pour HTTP), y sont utilisés.

J'ai la vague intuition qu'il y aurait trois machines en jeu:

* la machine de l'utilisateur, par exemple avec MacOSX et le navigateur Safari. Cette machine a un écran et un navigateur Web, donc est un client HTTP

* une appliance Linux dont il faudrait préciser le rôle -est-elle à la fois un serveur et un client HTTP?

* une autre machine serveur (j'imagine serveur HTTP) sous Linux dialoguant avec l'appliance selon des modalités incompréhensibles (pour l'instant).



----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 9 October 2007 20:15:05
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

je m'escuse de ne pas avoir était assez clair

en fait il y a deux machine
1 pc client qui peut etre n'importe quel pc avec une connexion internet et un navigateur

1 Appliance sous ubuntu avec fluxbox qui contient
1 serveur http apache2
1 serveur mysql
1 serveur red5 pour le streaming video
1 flashplayer
C'est sure cette appliance qu'il faut ouvrir des page dans flashplayer en fonction des bouton sur lequel a clické le client. Ces boutons lance des scripts php qui créer des fichier en l'occurence absence et connection

je sais pas quoi dire de plus si il faut que je précise autre chose dite le moi, en tout qu'a je vous remercie de l'attention que vous portez a ce sujet merci


Poste le Tuesday 9 October 2007 21:09:41
Répondre     Citer    
Re: optimisation de boucle linux

Je ne connais pas flashplayer. D'après ça il tourne dans le navigateur Mozilla, c'est donc le plugin flash habituel, qui s'execute sur le client HTTP, pas le serveur!

Mais je comprends pas précisément quels sont les échanges effectués: quelles requêtes HTTP et quelles réponses HTTP, via quelles pages PHP?

Je ne comprends pas pourquoi flashplayer (s'il s'agit bien de ça) devrait tourner sur le serveur Web (qui n'a ni clavier, ni souris, ni écran).

Pourquoi ne pas coder en PHP ce qui convient pour que le code flash ad hoc soit invoqué par le navigateur? (redirection de page).

S'il faut absoluement exécuter un programme depuis PHP, c'est possible d'y exécuter un programme externe mais je ne suis pas du tout sûr que le posteur initial en ait besoin.


J'ai la cruelle impression (j'espère me tromper) que le posteur initial ne comprends rien au fonctionnement du Web, notamment HTTP et HTML. En particulier, il devrait déjà s'éclaircir les idées en explicitant exactement les requêtes HTTP (comme GET, POST) et les réponses HTTP (commme 200 OK) qu'il attend (dans le cas favorable usuel). Jusqu'à présent, je n'ai toujours pas compris son problème. Ce qui se conçoit bien s'énonce clairement.

A ma connaissance, Flash utilise le protocole HTTP. C'est juste un type de contenu particulier, un langage de script propriétaire, et un plugin dans le navigateur, des balises particuliers dans la page HTML.


Bref, RTFM.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 9 October 2007 21:30:51
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

Si vous voulez il n'y a pas d'échange entre le client(pc qui se connecte sur le site stocké dans l'appliance) et le flash player(qui est flashplayer standalone donc s'éxécute sans navigateur)

Le client a accès a une page html dans laquelle il y a 2 boutons,lorsqu'il appuis surle bouton 1 ca lance le script appdecroche.php qui fabrique le fichier connect,s'il appuis sur le bouton 2 ca lance le script absence.php qui fabrique le fichier absence.

le but de mon script shell est de tester l'éxistance de ces fichiers,
si absence existe il doit ouvrir flashplayer sur l'animation absence.swf
si connect existe il doit ouvrir flashplayer sur l'animation connect.swf
si aucun fichier existe il faut ouvrir flashplayer sur l'animation menu.swf

Poste le Tuesday 9 October 2007 22:18:28
Répondre     Citer    
Re: optimisation de boucle linux

Pourquoi ne pas lancer le flashplayer standalone depuis le code PHP?


S'il dure plus longtemps qu'une requête HTTP, on pourrait le lancer en batch (par la commande batch ou at, qui pourrait être invoquée par du PHP) ou gérer finement le processus depuis PHP par proc_open

De manière générale, communiquer entre programmes différents uniquement par l'existence (ou l'absence) de fichiers est une très mauvaise idée. Unix est très riche en moyen de communications entre programmes (il est utile de se documenter à ce sujet).

Mais il faudrait raconter plus en détail ce que fait l'application, dont on a l'impression qu'elle a été conçue ou architecturée avec les pieds.

J'ai la vague impression qu'il s'agit d'une espèce de borne vidéo qu'on veut réinitialiser par du Web (càd que flashplayer standalone est juste un moyen d'afficher une sorte de vidéo en boucle, et qu'on voudrait par des requêtes HTTP faire démarrer ou arréter la vidéo (qui ne s'affiche donc pas sur le navigateur distant, mais sur la borne). Il fallait vraiement raconter ce contexte dès le départ!).

Je ne vois pas de raisons de synchroniser le flashplayer standalone et le serveur Web par (seulement) la présence ou l'absence de fichiers.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 9 October 2007 22:40:29
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

d'accord donc c'est une mauvaise idée si vous voulais cette borne est commandé par une télécommande, elle a pour but de communiquer avec les personne se situant devant, la personne qui veux communiquer se loggue sur un site web et a la possibilité d'appeler la borne quand il appel il faut que flashplayer de la borne affiche la page appdecroche.swf qui permet de répondre a l'appel.
Le client a aussi l'occasion de laisser un message dans ce cas flashplayer doit afficher le message c'est la page absence.swf

Poste le Tuesday 9 October 2007 22:55:38
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

En fait faudrais que le script d'appel lance flashplayer de lui meme au lieu de créer un fichier et de tester si le fichier existe mais comment lancer flash player en standalone sur le serveur dans la meme session graphique

Poste le Tuesday 9 October 2007 22:59:28
Répondre     Citer    
Re: optimisation de boucle linux

Citation
szambaux
comment lancer flash player en standalone sur le
serveur dans la même session graphique

Il faut évidemment enrober ce flash player dans un script qui lui installe le bon environnement (au sens le plus large, pas seulement celui de getenv). S'il s'agit d'affichage, il faut probablement des variables d'environnement comme DISPLAY XAUTHORITY ou autre....


Et ce script peut être lancé par PHP (soit directement avec les fonctions de gestion de processus, soit en passant par le système de batch).

Mais déjà la notion de session graphique me mets un peu mal à l'aise dans ce cas.

A mon avis un gros effort de documentation et d'apprentissage est nécessaire avant de coder.


----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Tuesday 9 October 2007 23:05:56
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

voila aprés plusieurs avis de personnes intéligentes, j'ai trouver une bonne solution enfin je crois,
quand l'utilisateur cliquera sur le bouton appel
ca lancera un script php
qui lancera un shell script avec en parametre la page a afficher sur l'appliance
et dans ce shell script je lance flashplayer : flashplayer $1

Poste le Tuesday 9 October 2007 23:08:35
Répondre     Citer    
Re: optimisation de boucle linux
Envoyé par: szambaux

Citation
Basile STARYNKEVITCH
szambaux a écrit :comment lancer flash player en
standalone sur le
serveur dans la même session graphique

Il faut évidemment enrober ce flash player dans un
script qui lui installe le bon environnement (au
sens le plus large, pas seulement celui de
getenv). S'il s'agit d'affichage, il faut
probablement des variables d'environnement comme
DISPLAY XAUTHORITY ou autre....


Et ce script peut être lancé par PHP (soit
directement avec les fonctions de gestion de
processus, soit en passant par le système de
batch).

Mais déjà la notion de session graphique me mets
un peu mal à l'aise dans ce cas.

A mon avis un gros effort de documentation et
d'apprentissage est nécessaire avant de coder.


----

Basile STARYNKEVITCH où on trouve mon mél

N.B. N'hesitez pas à consulter aussi mes
contributions antérieures.


Je suis d'accord avec vous je connais bien flash et un les fonctions de base de php, en fait pour cette rééaisation j'ai manqué de logique et j'avais pas analyser les choses avant de codé ce qui donne un résultat trés mauvais

Poste le Tuesday 9 October 2007 23:11:48
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
optimisation de boucle linux
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons