---
title: "Mail script"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/19296-mail-script"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "cya"
published: "2001-02-28T17:25:00.000Z"
updated: "2001-03-07T21:16:00.000Z"
replies: 8
views: 210
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/19296-mail-script"
---

# Mail script

## #1 — cya, 2001-02-28T17:25Z

Hej alla!

Jag tänkte göra ett mailing list script.  med standard funktioner som ta in mail adresser och kunna skicka ut mail genom ett webb gränsnitt.

Jag funderar på en sak, om jag initierar en process på servern, hur kan jag förhindra att den inte dör ut?

Hur länge väntar browsern på respons innan den gör "time out"?

Ex. Om jag tänkt att skicka ut 1000 mail till abonenterna, hur gör jag smartast?

Tacksam för alla tankar och synpunkter!

//Cya

\[Redigerat av cya den 28 feb 2001\]

Permalänk: https://www.webforum.nu/p/19296

## #2 — Jojoxx, 2001-02-28T19:07Z

Kör du på en windows-plattform kan du "fuska" genom att använda kommandot "start" för att starta en ny process utan att vänta på att den gamla. Annars bör du kunna använda perls "fork" för att fixa detta. Hänvisar till perl.com's doc; <http://www.perl.com/pub/doc/manual/html/pod/perlfunc/fork.html>

Permalänk: https://www.webforum.nu/p/341633

## #3 — Marley, 2001-03-01T12:17Z

Om du kör unix server så finns ju nohup kommandot...

Permalänk: https://www.webforum.nu/p/341634

## #4 — cya, 2001-03-01T17:57Z

Hej!

Jojoxx:
Tack för länken.

Marley:
Tror att jag försöker med fork, vill försöka vara så plattforms oberoende som möjligt.

Jag har pulat ihop lite kod, tror ni det kommer att fungera bra? 
Vad annars bör jag tänka på?

Tacksam för responsen!

//Cya

```
my $pid = fork();

if ($pid) {
        # Förälder
        print "Content-type: text/html\n\n";
	print "Ditt utskick håller på att skickas ut.\n";
        exit(0);
}
else {
        # Barnet

        # .. Mail funktioner ..
}
```

Permalänk: https://www.webforum.nu/p/341635

## #5 — Peter_B, 2001-03-02T00:50Z

hmm... dör inte barnet om föräldern dör? 

samt att webservern dödar alla kvarblivna processer om de inte är klara efter typ 30 sekunder eller så...

jag skulle göra så att programmet skriver en köfil som sedan ett annat program (aktiveras med cron?) tar och processar var 10:e minut eller så.

Permalänk: https://www.webforum.nu/p/341636

## #6 — cya, 2001-03-05T15:03Z

> webservern dödar alla kvarblivna processer om de inte är klara efter typ 30 sekunder eller så

Ajaj, det hade jag inte räknat med ;)
Någon mer som har kännedom om detta?

/Cya

Permalänk: https://www.webforum.nu/p/341637

## #7 — Jojoxx, 2001-03-07T06:46Z

> webservern dödar alla kvarblivna processer om de inte är klara efter typ 30 sekunder eller så...

Tanken var att skapa en så kallad zombie. Jag tolkar det som en child utan parent som således borde "överleva" webservern. Start fungerar bra på win32 för detta, så jag har inte använt fork, men jag tycker en zombie låter som precis det man behöver. (Även om de inte är snälla).

Permalänk: https://www.webforum.nu/p/341638

## #8 — cya, 2001-03-07T18:29Z

Peter_B har rätt, webservern dödar barnet.

Jag har testat på Apache/1.3.12 (Unix) och där dör barnet direkt, fast processen går under 30 sekunder.

På Apache/1.3.17 (Win32) så får inte browsern någon respons förän barnet är färdigt.

På IIS 4 (NT4) så är fork tydligen inte implementerat.

Finns det inga andra sätt att starta en process utan att behöva vänta på den?
Det verkar som man får skippa det där men plattforms oberoende, eller?

/Cya 

Koden som jag testat med:

```
#!/usr/bin/perl -w

use strict;

my $pid = fork();

if ($pid) {
	# Föräldern
	print "Content-type: text/html\n\n";
	print "...process...\n";
	exit(0);
}
else {
	# Barnet

	close (STDOUT);

	sleep 60;

	open(DATA,">child.txt");
	flock(DATA,2);

	for (my $i = 0; $i <= 1000; $i++) {
		print DATA "$i\n";
	}

	flock(DATA,8);
	close(DATA);
	chmod(0666,"child.txt");

	exit;
}
```

Permalänk: https://www.webforum.nu/p/341639

## #9 — Jojoxx, 2001-03-07T21:16Z

Ok, då missuppfattade jag innebörden med en child zombie.

Dock är fork en funktion i perl och har ingenting med vilken webserver du använder. Har du testat det på olika maskiner kan det skilja på perl-version. Jag tror fork har tillkommit rätt sent på för Win32 (Active Perl).

De plattformsberoende alternativen är cron/crontab för Unix eller "at" för WinNT (detta för att schemalägga aktiviteter). Men på windowsplattformar fungerar som sagt start lika bra, eller bättre i ditt fall.

Permalänk: https://www.webforum.nu/p/341640

---

Tråden på webben: https://www.webforum.nu/amne/programmering/19296-mail-script
