List:General Discussion« Previous MessageNext Message »
From:Koki Takeda Date:July 18 2007 7:35am
Subject:it doesn't return from the mysql_query processing
View as plain text  
I hope that my contacting you is not an imposition in any way.

My name is Koki Takeda.

This time, I made the php program using MySQL. 

The child process is generated in the program, and MySQL query 
are transmitted two or more times in the child process. That's 
my problem.

There is difficultly both executions in a present environment 
though I thought about the following two solutions by 

I will inform the following of details. Please teach some 

And, please contact me when there are lack information etc.

I would be very happy to hear from you.

■ Facts

  OS:    SunOS xxx 5.8 Generic_108528-23 sun4u sparc 
         SUNW,UltraAX-i2 (Solaris 8)
  php:   4.3.9
  Mysql: Ver 4.0.12-standard for sun-solaris2.8 on sparc

■ Content of processing

  In the made php program (A temporary name: test.php), it 
  transmits repeating MySQL query (select,insert) according to 
  MySQL function mysql_query.

  And, test.php forking does the process, and operates at the 
  same time five child processes. 
  MySQL query is transmitted about 2500 times in all child 
  process total. 

  I will explain the outline of the program and the outline of 
  the program flow as follows. 

  <Outline of test.php program>

    It is processing that forwards an arbitrary file to 
    another server.

  <Outline of test.php program flow>


    Query execution to acquire file list to be transmitted 
    (real environment: About 60 records)
      mysql_query (select)

    Ceri execution to acquire server list(real environment: 
    Five records)
      mysql_query (select)

    Beginning of loop1(loop for a few minutes of server) {

      It is a fork as for the process. 

        if Fork failure {

            Error processing

        } elseif parent process {

            Process ID backup

        } else { child process

            Beginning of loop2(loop for a few minutes of file 
            for forwarding) {

                Ceri execution that judges forwarding
                  mysql_query (select)

                if It is not an object of forwarding
                   (Forwarded it. ) {

                    Ceri execution of log writing
                      mysql_query (insert)

                    Continuance of loop2

                Forwarding execution

            End of loop2

    End of loop1

    Processing that waits for end of all child processes


■ symptom

  Processing ends normally in case of almost.
  However, in rare cases, it doesn't return from the 
  mysql_query processing after mysql_query is called about 
  200-250 times in total by all child process processing, and 
  processing stops. 

  SQL sentence that doesn't return from the mysql_query 
  processing is as follows. 

  ・select updated from table_name_1 where code = 98

  ・insert into table_name_2 ( field_name_1,field_name_2,  
    field_name_3,field_name_4,field_name_5 ) values ( '1', '', 
    '', 1,'XX#1(doc01)( copy processing was 
    skipped.( ' )

  And Mysqld is done while having started while this symptom 
  is occurring. 
  And, other Ceri can be executed. 

  Nonw, when this symptom occurs, kill does me parent process 
  and 5 child processes now.

■ Idea of solution

  It was able to be confirmed that the following errors might
  occur when test.php was being executed.  Therefore, I 
  judged that the buffer might been filled. 

  <Error message>
  Malformed packet

  Then, I considered the idea of the following two solutions. 
  However, both influences that it has on other programs are 
  large, and time is required for the verification.
  Therefore, I am looking for other solutions.

  <Idea of solution>
  (1)After mysql_query is executed, the processing of the 
     flush of query cash is added.
  (2)Upgrade of mysql

■ Content of question

  Based on above, I want to make the following question. 

  ・Is there a case similar to this symptom?

  ・How was this symptom canceled when there was a similar 

  ・Additionally, does another have the thought solution?

it doesn't return from the mysql_query processingKoki Takeda18 Jul
  • Re: it doesn't return from the mysql_query processingBill Newton18 Jul