#!/usr/local/plt/bin/mzscheme #! /bin/sh #| exec env mzscheme -qr "$0" ${1+"$@"} |# ;; for windows, I used exec "C:/Program Files/PLT/MzScheme.exe" "${0/\/cygdrive\/c\//c:\/}" ${1+"$@"} ;;; Implements a simple script to multiply two numbers, using FCGI if it is ;;; available, or falling back on CGI if not. #lang scheme (require net/cgi (file "fastcgi.scm")) ;(my-log "Initializing. PID ~a\n" (getpid)) (define count 0) (fcgi-loop (λ () ;; if running stand-alone, fake CGI. (when (not (getenv "REQUEST_METHOD")) (begin (putenv "REQUEST_METHOD" "GET") (putenv "QUERY_STRING" "num1=10&num2=20"))) (set! count (add1 count)) ;; Ready for CGI! (let ([bindings (get-bindings)]) (let ([num1 (string->number (extract-binding/single 'num1 bindings))] [num2 (string->number (extract-binding/single 'num2 bindings))]) (generate-html-output "Eddie is the king" (list (string->html (format "~a * ~a is ~a (count ~a, cgi? ~a, fcgi-lib ~a)" num1 num2 (* num1 num2) count (fcgx-is-cgi?) fcgi-lib))))))))