From: ludovic d. <l.d...@la...> - 2010-09-21 06:37:55
|
Hello everybody, At the first point, i'd like you to forgive my bad english, i'll try to be readable ! I've been concepting a browser-game since about 4 months, writing on copybooks, table corners, mall bill, whatever. I'm a PHP developper but this is just a job, i would like to try something new. Sice a short week, i've been enyoing erlang, newborn in the functionnal programming world, and i think erlang+yaws is a good solution for what i need. My game would run under a main erlang process, but yaws will not be the only app which will be connected with the server. I'll build some clients who will handle transformations on the virtual world of the game. That's how i plan to handle theese clients : On startup, my game server will store the PID which have to receive requests (a binary with id,action_id,action_params) in mnesia, and my clients will look for this PID at launch (only at launch, then the remind the PID on their recursion loop). But i think it is not a good solution for yaws: Yaws will not be stopped, so it has to know the exact PID at the very moment it changes. Server could have a downtime, i'll launch another process to handle requests who receives requests and send back "Hi, temporary downtime, be patient" with some other informations. Server could be emergency restarted and have a new PID on startup. So, in my out(A) functions, i have to know this PID. How could i do that ? I dont want annoy you with so noobish questions, i'm young at erlang. If i register an atom with the PID of my server at his start, the before-existing atom with the same name will be replaced ? Is it sufficient that yaws and my server runs on the same VM for yaws knows the existence of such atom ? (beacause i've read everywhere that an atom is just an atom.. bu now atoms can handle PIDs ^^) Maybe the solution is launching yaws in embedded mode (but he will be down along with the server at downtime => the web pages, like game documentation, would be served by another server). And in this case, could i call the setconf(Gconf, Groups) several time from the same process. There, i'm not asking for code, only hints, i'm reading all documentation as i can, but english is hard to me (30 min. to write this :) ). So, thank you for reading. Lud PS: if it's the wrong list to ask such questions, let me know ! |
From: Claes W. <kl...@ta...> - 2010-09-21 07:57:55
|
On 09/21/2010 08:21 AM, ludovic demblans wrote: > > So, in my out(A) functions, i have to know this PID. > How could i do that ? It sounds to me as if you could do well with just a normal registered process. So if you write a normal gen_server, and make sure it gets assigned a name as in: start() -> gen_server:start_link({local, myname}, mymod, [], []). And then ensure that this process is started at the same time yaws is started as: # yaws --runmod mymod ....... You can reach this process from ypur .yaws pages code simply by the name of the process. The atom (myname), the name of the process, is used by gen_server.erl to register/2 the process. Test by: myname ! hello. In the shell. > Maybe the solution is launching yaws in embedded mode (but he will be down > along with the server at downtime => the web pages, like game > documentation, would be served by another server). And in this case, could > i call the setconf(Gconf, Groups) several time from the same process. > Don't go that way. Good luck /klacke |
From: ludovic d. <l.d...@la...> - 2010-09-21 20:49:31
|
Hi, Ok, i'll try this, i'm not used to gen_server or other "behaviours", i think i have to learn more. So, thank you. Lud Le Tue, 21 Sep 2010 09:57:47 +0200, Claes Wikstrom <kl...@ta...> a écrit: > > On 09/21/2010 08:21 AM, ludovic demblans wrote: > >> >> So, in my out(A) functions, i have to know this PID. >> How could i do that ? > > It sounds to me as if you could do well with just a normal > registered process. So if you write a normal gen_server, and make sure > it gets assigned a name as in: > > start() -> > gen_server:start_link({local, myname}, mymod, [], []). > > And then ensure that this process is started at the same time yaws > is started as: > > # yaws --runmod mymod ....... > > You can reach this process from ypur .yaws pages code simply by > the name of the process. > > The atom (myname), the name of the process, is used by gen_server.erl > to register/2 the process. Test by: > > myname ! hello. > > In the shell. > > >> Maybe the solution is launching yaws in embedded mode (but he will be >> down >> along with the server at downtime => the web pages, like game >> documentation, would be served by another server). And in this case, >> could >> i call the setconf(Gconf, Groups) several time from the same process. >> > > Don't go that way. > > > Good luck > > /klacke > > ------------------------------------------------------------------------------ > Start uncovering the many advantages of virtual appliances > and start using them to simplify application deployment and > accelerate your shift to cloud computing. > http://p.sf.net/sfu/novell-sfdev2dev > _______________________________________________ > Erlyaws-list mailing list > Erl...@li... > https://lists.sourceforge.net/lists/listinfo/erlyaws-list > -- Utilisant le client e-mail révolutionnaire d'Opera : http://www.opera.com/mail/ |